Freshly installed D8 (8.2.0-dev as required by dev code)
Current mutual_credit code from git
Enabled Accounting Core, Balance Limits
Registered a new user.
Trying to set its limits (/wallet/2/limits), getting "The website encountered an unexpected error. Please try again later."

Website log contains:

Recoverable fatal error: Argument 1 passed to Drupal\\mcapi_limits\\WalletLimiter::defaults() must be an instance of Drupal\\mcapi_limits\\CurrencyInterface, instance of Drupal\\mcapi\\Entity\\Currency given, called in /srv/www/htdocs/modules/mutual_credit/modules/limits/src/WalletLimiter.php on line 66 and defined in /srv/www/htdocs/modules/mutual_credit/modules/limits/src/WalletLimiter.php on line 173
#0 /srv/www/htdocs/core/includes/bootstrap.inc(548): _drupal_error_handler_real(4096, 'Argument 1 pass...', '/srv/www/htdocs...', 173, Array)
#1 /srv/www/htdocs/modules/mutual_credit/modules/limits/src/WalletLimiter.php(173): _drupal_error_handler(4096, 'Argument 1 pass...', '/srv/www/htdocs...', 173, Array)
#2 /srv/www/htdocs/modules/mutual_credit/modules/limits/src/WalletLimiter.php(66): Drupal\\mcapi_limits\\WalletLimiter->defaults(Object(Drupal\\mcapi\\Entity\\Currency))
#3 /srv/www/htdocs/modules/mutual_credit/modules/limits/src/WalletLimiter.php(51): Drupal\\mcapi_limits\\WalletLimiter->getLimits(true)
#4 /srv/www/htdocs/modules/mutual_credit/modules/limits/src/WalletLimiter.php(43): Drupal\\mcapi_limits\\WalletLimiter->setWallet(Object(Drupal\\mcapi\\Entity\\Wallet))
#5 /srv/www/htdocs/modules/mutual_credit/modules/limits/src/Form/WalletLimitOverride.php(57): Drupal\\mcapi_limits\\WalletLimiter::create(Object(Drupal\\mcapi\\Entity\\Wallet))
#6 [internal function]: Drupal\\mcapi_limits\\Form\\WalletLimitOverride->buildForm(Array, Object(Drupal\\Core\\Form\\FormState))
#7 /srv/www/htdocs/core/lib/Drupal/Core/Form/FormBuilder.php(512): call_user_func_array(Array, Array)\n#8 /srv/www/htdocs/core/lib/Drupal/Core/Form/FormBuilder.php(271): Drupal\\Core\\Form\\FormBuilder->retrieveForm('wallet_limits_f...', Object(Drupal\\Core\\Form\\FormState))
#9 /srv/www/htdocs/core/lib/Drupal/Core/Controller/FormController.php(74): Drupal\\Core\\Form\\FormBuilder->buildForm(Object(Drupal\\mcapi_limits\\Form\\WalletLimitOverride), Object(Drupal\\Core\\Form\\FormState))
#10 [internal function]: Drupal\\Core\\Controller\\FormController->getContentResult(Object(Symfony\\Component\\HttpFoundation\\Request), Object(Drupal\\Core\\Routing\\RouteMatch))
#11 /srv/www/htdocs/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(123): call_user_func_array(Array, Array)
#12 /srv/www/htdocs/core/lib/Drupal/Core/Render/Renderer.php(574): Drupal\\Core\\EventSubscriber\\EarlyRenderingControllerWrapperSubscriber->Drupal\\Core\\EventSubscriber\\{closure}()
#13 /srv/www/htdocs/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(124): Drupal\\Core\\Render\\Renderer->executeInRenderContext(Object(Drupal\\Core\\Render\\RenderContext), Object(Closure))
#14 /srv/www/htdocs/core/lib/Drupal/Core/EventSubscriber/EarlyRenderingControllerWrapperSubscriber.php(97): Drupal\\Core\\EventSubscriber\\EarlyRenderingControllerWrapperSubscriber->wrapControllerExecutionInRenderContext(Array, Array)
#15 [internal function]: Drupal\\Core\\EventSubscriber\\EarlyRenderingControllerWrapperSubscriber->Drupal\\Core\\EventSubscriber\\{closure}()
#16 /srv/www/htdocs/vendor/symfony/http-kernel/HttpKernel.php(139): call_user_func_array(Object(Closure), Array)
#17 /srv/www/htdocs/vendor/symfony/http-kernel/HttpKernel.php(62): Symfony\\Component\\HttpKernel\\HttpKernel->handleRaw(Object(Symfony\\Component\\HttpFoundation\\Request), 1)
#18 /srv/www/htdocs/core/lib/Drupal/Core/StackMiddleware/Session.php(57): Symfony\\Component\\HttpKernel\\HttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)
#19 /srv/www/htdocs/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(47): Drupal\\Core\\StackMiddleware\\Session->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)
#20 /srv/www/htdocs/core/modules/page_cache/src/StackMiddleware/PageCache.php(99): Drupal\\Core\\StackMiddleware\\KernelPreHandle->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)
#21 /srv/www/htdocs/core/modules/page_cache/src/StackMiddleware/PageCache.php(78): Drupal\\page_cache\\StackMiddleware\\PageCache->pass(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)
#22 /srv/www/htdocs/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(47): Drupal\\page_cache\\StackMiddleware\\PageCache->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)
#23 /srv/www/htdocs/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(50): Drupal\\Core\\StackMiddleware\\ReverseProxyMiddleware->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)
#24 /srv/www/htdocs/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\\Core\\StackMiddleware\\NegotiationMiddleware->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)
#25 /srv/www/htdocs/core/lib/Drupal/Core/DrupalKernel.php(652): Stack\\StackedHttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)
#26 /srv/www/htdocs/index.php(19): Drupal\\Core\\DrupalKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request))
#27 {main}
, referer: http://localhost/wallet/2

Looks like CurrencyInterface is not taken from Drupal\mcapi\Entity namespace.

Temporary solution I used:

diff --git a/modules/limits/src/WalletLimiter.php b/modules/limits/src/WalletLimiter.php
index a696580..ceb7722 100644
--- a/modules/limits/src/WalletLimiter.php
+++ b/modules/limits/src/WalletLimiter.php
@@ -170,7 +170,7 @@ class WalletLimiter {
    * @return array
    *   The min and max limits.
    */
-  public function defaults(CurrencyInterface $currency) {
+  public function defaults(\Drupal\mcapi\Entity\CurrencyInterface $currency) {
     return \Drupal::service('plugin.manager.mcapi_limits')
       ->createInstanceCurrency($currency)
       ->getLimits($this->wallet);

Need to make up namespaces.

Comments

m0ray79 created an issue. See original summary.

matslats’s picture

Status: Active » Fixed

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.