Skip to content

Call to a member function __toArray() on array

I’m passing new information from my custom shipping method to the frontend following the previous answer Need to get additional data in custom shipping method Magento 2?

namespace SwayShipSmartModelCart;
class ShippingMethodConverter extends MagentoQuoteModelCartShippingMethodConverter
{
  public function modelToDataObject($rateModel, $quoteCurrencyCode) 
  {
    $result = parent::modelToDataObject($rateModel, $quoteCurrencyCode);
    $result->setData('method_description', $rateModel->getData('method_description'));
    return $result->__toArray();  
  }
}

However, I’m getting the error: “Call to a member function __toArray() on array in /var/www/html/vendor/magento/module-checkout/Model/DefaultConfigProvider.php:537”.

In my shipping method converter, if I remove the __toArray() from the return and just return $result, the error doesn’t happen, but my new info isn’t passed to the frontend.

The weird behavior is that this same code with __toArray() sometimes works, but sometimes it doesn’t. I can’t figure out why it works in some cases and not in others.

Im using Magento 2.4.7 with sample data.

 Error: Call to a member function __toArray() on array in /var/www/html/vendor/magento/module-checkout/Model/DefaultConfigProvider.php:537
Stack trace:
#0 /var/www/html/vendor/magento/module-checkout/Model/DefaultConfigProvider.php(322): MagentoCheckoutModelDefaultConfigProvider->getSelectedShippingMethod()
#1 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(58): MagentoCheckoutModelDefaultConfigProvider->getConfig()
#2 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(138): MagentoCheckoutModelDefaultConfigProviderInterceptor->___callParent('getConfig', Array)
#3 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(153): MagentoCheckoutModelDefaultConfigProviderInterceptor->MagentoFrameworkInterception{closure}()
#4 /var/www/html/generated/code/Magento/Checkout/Model/DefaultConfigProvider/Interceptor.php(23): MagentoCheckoutModelDefaultConfigProviderInterceptor->___callPlugins('getConfig', Array, Array)
#5 /var/www/html/vendor/magento/module-checkout/Model/CompositeConfigProvider.php(39): MagentoCheckoutModelDefaultConfigProviderInterceptor->getConfig()
#6 /var/www/html/vendor/magento/module-checkout/Block/Onepage.php(106): MagentoCheckoutModelCompositeConfigProvider->getConfig()
#7 /var/www/html/vendor/magento/module-checkout/Block/Onepage.php(128): MagentoCheckoutBlockOnepage->getCheckoutConfig()
#8 /var/www/html/vendor/magento/module-checkout/view/frontend/templates/onepage.phtml(27): MagentoCheckoutBlockOnepage->getSerializedCheckoutConfig()
#9 /var/www/html/vendor/magento/framework/View/TemplateEngine/Php.php(67): include('/var/www/html/v...')
#10 /var/www/html/vendor/magento/framework/View/Element/Template.php(263): MagentoFrameworkViewTemplateEnginePhp->render(Object(MagentoCheckoutBlockOnepage), '/var/www/html/v...', Array)
#11 /var/www/html/vendor/magento/framework/View/Element/Template.php(293): MagentoFrameworkViewElementTemplate->fetchView('/var/www/html/v...')
#12 /var/www/html/vendor/magento/framework/View/Element/AbstractBlock.php(1128): MagentoFrameworkViewElementTemplate->_toHtml()
#13 /var/www/html/vendor/magento/framework/View/Element/AbstractBlock.php(1132): MagentoFrameworkViewElementAbstractBlock->MagentoFrameworkViewElement{closure}()
#14 /var/www/html/vendor/magento/framework/View/Element/AbstractBlock.php(676): MagentoFrameworkViewElementAbstractBlock->_loadCache()
#15 /var/www/html/vendor/magento/framework/View/Layout.php(578): MagentoFrameworkViewElementAbstractBlock->toHtml()
#16 /var/www/html/vendor/magento/framework/View/Layout.php(555): MagentoFrameworkViewLayout->_renderBlock('checkout.root')
#17 /var/www/html/generated/code/Magento/Framework/View/Layout/Interceptor.php(149): MagentoFrameworkViewLayout->renderNonCachedElement('checkout.root')
#18 /var/www/html/vendor/magento/framework/View/Layout.php(510): MagentoFrameworkViewLayoutInterceptor->renderNonCachedElement('checkout.root')
#19 /var/www/html/generated/code/Magento/Framework/View/Layout/Interceptor.php(140): MagentoFrameworkViewLayout->renderElement('checkout.root', false)
#20 /var/www/html/vendor/magento/framework/View/Layout.php(606): MagentoFrameworkViewLayoutInterceptor->renderElement('checkout.root', false)
#21 /var/www/html/vendor/magento/framework/View/Layout.php(557): MagentoFrameworkViewLayout->_renderContainer('content', false)
#22 /var/www/html/generated/code/Magento/Framework/View/Layout/Interceptor.php(149): MagentoFrameworkViewLayout->renderNonCachedElement('content')
#23 /var/www/html/vendor/magento/framework/View/Layout.php(510): MagentoFrameworkViewLayoutInterceptor->renderNonCachedElement('content')
#24 /var/www/html/generated/code/Magento/Framework/View/Layout/Interceptor.php(140): MagentoFrameworkViewLayout->renderElement('content', false)
#25 /var/www/html/vendor/magento/framework/View/Layout.php(606): MagentoFrameworkViewLayoutInterceptor->renderElement('content', false)
#26 /var/www/html/vendor/magento/framework/View/Layout.php(557): MagentoFrameworkViewLayout->_renderContainer('main', false)
#27 /var/www/html/generated/code/Magento/Framework/View/Layout/Interceptor.php(149): MagentoFrameworkViewLayout->renderNonCachedElement('main')
#28 /var/www/html/vendor/magento/framework/View/Layout.php(510): MagentoFrameworkViewLayoutInterceptor->renderNonCachedElement('main')
#29 /var/www/html/generated/code/Magento/Framework/View/Layout/Interceptor.php(140): MagentoFrameworkViewLayout->renderElement('main', false)
#30 /var/www/html/vendor/magento/framework/View/Layout.php(606): MagentoFrameworkViewLayoutInterceptor->renderElement('main', false)
#31 /var/www/html/vendor/magento/framework/View/Layout.php(557): MagentoFrameworkViewLayout->_renderContainer('columns', false)
#32 /var/www/html/generated/code/Magento/Framework/View/Layout/Interceptor.php(149): MagentoFrameworkViewLayout->renderNonCachedElement('columns')
#33 /var/www/html/vendor/magento/framework/View/Layout.php(510): MagentoFrameworkViewLayoutInterceptor->renderNonCachedElement('columns')
#34 /var/www/html/generated/code/Magento/Framework/View/Layout/Interceptor.php(140): MagentoFrameworkViewLayout->renderElement('columns', false)
#35 /var/www/html/vendor/magento/framework/View/Layout.php(606): MagentoFrameworkViewLayoutInterceptor->renderElement('columns', false)
#36 /var/www/html/vendor/magento/framework/View/Layout.php(557): MagentoFrameworkViewLayout->_renderContainer('main.content', false)
#37 /var/www/html/generated/code/Magento/Framework/View/Layout/Interceptor.php(149): MagentoFrameworkViewLayout->renderNonCachedElement('main.content')
#38 /var/www/html/vendor/magento/framework/View/Layout.php(510): MagentoFrameworkViewLayoutInterceptor->renderNonCachedElement('main.content')
#39 /var/www/html/generated/code/Magento/Framework/View/Layout/Interceptor.php(140): MagentoFrameworkViewLayout->renderElement('main.content', false)
#40 /var/www/html/vendor/magento/framework/View/Layout.php(606): MagentoFrameworkViewLayoutInterceptor->renderElement('main.content', false)
#41 /var/www/html/vendor/magento/framework/View/Layout.php(557): MagentoFrameworkViewLayout->_renderContainer('page.wrapper', false)
#42 /var/www/html/generated/code/Magento/Framework/View/Layout/Interceptor.php(149): MagentoFrameworkViewLayout->renderNonCachedElement('page.wrapper')
#43 /var/www/html/vendor/magento/framework/View/Layout.php(510): MagentoFrameworkViewLayoutInterceptor->renderNonCachedElement('page.wrapper')
#44 /var/www/html/generated/code/Magento/Framework/View/Layout/Interceptor.php(140): MagentoFrameworkViewLayout->renderElement('page.wrapper', false)
#45 /var/www/html/vendor/magento/framework/View/Layout.php(606): MagentoFrameworkViewLayoutInterceptor->renderElement('page.wrapper', false)
#46 /var/www/html/vendor/magento/framework/View/Layout.php(557): MagentoFrameworkViewLayout->_renderContainer('root', false)
#47 /var/www/html/generated/code/Magento/Framework/View/Layout/Interceptor.php(149): MagentoFrameworkViewLayout->renderNonCachedElement('root')
#48 /var/www/html/vendor/magento/framework/View/Layout.php(510): MagentoFrameworkViewLayoutInterceptor->renderNonCachedElement('root')
#49 /var/www/html/generated/code/Magento/Framework/View/Layout/Interceptor.php(140): MagentoFrameworkViewLayout->renderElement('root', true)
#50 /var/www/html/vendor/magento/framework/View/Layout.php(975): MagentoFrameworkViewLayoutInterceptor->renderElement('root')
#51 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(58): MagentoFrameworkViewLayout->getOutput()
#52 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(138): MagentoFrameworkViewLayoutInterceptor->___callParent('getOutput', Array)
#53 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(153): MagentoFrameworkViewLayoutInterceptor->MagentoFrameworkInterception{closure}()
#54 /var/www/html/generated/code/Magento/Framework/View/Layout/Interceptor.php(347): MagentoFrameworkViewLayoutInterceptor->___callPlugins('getOutput', Array, Array)
#55 /var/www/html/vendor/magento/framework/View/Result/Page.php(260): MagentoFrameworkViewLayoutInterceptor->getOutput()
#56 /var/www/html/vendor/magento/framework/View/Result/Layout.php(171): MagentoFrameworkViewResultPage->render(Object(MagentoFrameworkAppResponseHttpInterceptor))
#57 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(58): MagentoFrameworkViewResultLayout->renderResult(Object(MagentoFrameworkAppResponseHttpInterceptor))
#58 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(138): MagentoFrameworkViewResultPageInterceptor->___callParent('renderResult', Array)
#59 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(153): MagentoFrameworkViewResultPageInterceptor->MagentoFrameworkInterception{closure}(Object(MagentoFrameworkAppResponseHttpInterceptor))
#60 /var/www/html/generated/code/Magento/Framework/View/Result/Page/Interceptor.php(95): MagentoFrameworkViewResultPageInterceptor->___callPlugins('renderResult', Array, Array)
#61 /var/www/html/vendor/magento/framework/App/Http.php(120): MagentoFrameworkViewResultPageInterceptor->renderResult(Object(MagentoFrameworkAppResponseHttpInterceptor))
#62 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(58): MagentoFrameworkAppHttp->launch()
#63 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(138): MagentoFrameworkAppHttpInterceptor->___callParent('launch', Array)
#64 /var/www/html/vendor/magento/module-application-performance-monitor/Plugin/ApplicationPerformanceMonitor.php(38): MagentoFrameworkAppHttpInterceptor->MagentoFrameworkInterception{closure}()
#65 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(135): MagentoApplicationPerformanceMonitorPluginApplicationPerformanceMonitor->aroundLaunch(Object(MagentoFrameworkAppHttpInterceptor), Object(Closure))
#66 /var/www/html/vendor/magento/framework/Interception/Interceptor.php(153): MagentoFrameworkAppHttpInterceptor->MagentoFrameworkInterception{closure}()
#67 /var/www/html/generated/code/Magento/Framework/App/Http/Interceptor.php(23): MagentoFrameworkAppHttpInterceptor->___callPlugins('launch', Array, NULL)
#68 /var/www/html/vendor/magento/framework/App/Bootstrap.php(264): MagentoFrameworkAppHttpInterceptor->launch()
#69 /var/www/html/pub/index.php(30): MagentoFrameworkAppBootstrap->run(Object(MagentoFrameworkAppHttpInterceptor))
#70 {main}