3

While I'm trying to view the status of a shipment. It will shows Exception #0 (Exception): Warning: Invalid argument supplied for foreach() in vendor/magento/module-shipping/view/adminhtml/templates/order/packaging/packed.phtml on line 12

Magento version : 2.1.4 But it also happens under 2.1.3

full error message :

1 exception(s):
Exception #0 (Exception): Warning: Invalid argument supplied for foreach() in /home/wwwroot/shopkey.doyustudio.com/vendor/magento/module-shipping/view/adminhtml/templates/order/packaging/packed.phtml on line 12

Exception #0 (Exception): Warning: Invalid argument supplied for foreach() in /home/wwwroot/shopkey.doyustudio.com/vendor/magento/module-shipping/view/adminhtml/templates/order/packaging/packed.phtml on line 12
#0 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/module-shipping/view/adminhtml/templates/order/packaging/packed.phtml(12): Magento\Framework\App\ErrorHandler->handler(2, 'Invalid argumen...', '/home/wwwroot/s...', 12, Array)
#1 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/TemplateEngine/Php.php(59): include('/home/wwwroot/s...')
#2 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Element/Template.php(255): Magento\Framework\View\TemplateEngine\Php->render(Object(Magento\Shipping\Block\Adminhtml\Order\Packaging\Interceptor), '/home/wwwroot/s...', Array)
#3 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Element/Template.php(279): Magento\Framework\View\Element\Template->fetchView('/home/wwwroot/s...')
#4 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/module-backend/Block/Template.php(104): Magento\Framework\View\Element\Template->_toHtml()
#5 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Element/AbstractBlock.php(659): Magento\Backend\Block\Template->_toHtml()
#6 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(542): Magento\Framework\View\Element\AbstractBlock->toHtml()
#7 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(518): Magento\Framework\View\Layout->_renderBlock('shipment_packed')
#8 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout->renderNonCachedElement('shipment_packed')
#9 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Element/AbstractBlock.php(499): Magento\Framework\View\Layout->renderElement('shipment_packed', true)
#10 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/module-shipping/view/adminhtml/templates/view/form.phtml(109): Magento\Framework\View\Element\AbstractBlock->getChildHtml('shipment_packed')
#11 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/TemplateEngine/Php.php(59): include('/home/wwwroot/s...')
#12 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Element/Template.php(255): Magento\Framework\View\TemplateEngine\Php->render(Object(Magento\Shipping\Block\Adminhtml\View\Form), '/home/wwwroot/s...', Array)
#13 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Element/Template.php(279): Magento\Framework\View\Element\Template->fetchView('/home/wwwroot/s...')
#14 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/module-backend/Block/Template.php(104): Magento\Framework\View\Element\Template->_toHtml()
#15 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Element/AbstractBlock.php(659): Magento\Backend\Block\Template->_toHtml()
#16 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(542): Magento\Framework\View\Element\AbstractBlock->toHtml()
#17 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(518): Magento\Framework\View\Layout->_renderBlock('form')
#18 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout->renderNonCachedElement('form')
#19 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Element/AbstractBlock.php(499): Magento\Framework\View\Layout->renderElement('form', true)
#20 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/module-backend/Block/Widget/Form/Container.php(173): Magento\Framework\View\Element\AbstractBlock->getChildHtml('form')
#21 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/module-backend/view/adminhtml/templates/widget/form/container.phtml(15): Magento\Backend\Block\Widget\Form\Container->getFormHtml()
#22 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/TemplateEngine/Php.php(59): include('/home/wwwroot/s...')
#23 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Element/Template.php(255): Magento\Framework\View\TemplateEngine\Php->render(Object(Magento\Shipping\Block\Adminhtml\View), '/home/wwwroot/s...', Array)
#24 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Element/Template.php(279): Magento\Framework\View\Element\Template->fetchView('/home/wwwroot/s...')
#25 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/module-backend/Block/Template.php(104): Magento\Framework\View\Element\Template->_toHtml()
#26 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Element/AbstractBlock.php(659): Magento\Backend\Block\Template->_toHtml()
#27 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(542): Magento\Framework\View\Element\AbstractBlock->toHtml()
#28 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(518): Magento\Framework\View\Layout->_renderBlock('sales_shipment_...')
#29 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout->renderNonCachedElement('sales_shipment_...')
#30 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout->renderElement('sales_shipment_...')
#31 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('content')
#32 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout->renderNonCachedElement('content')
#33 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout->renderElement('content')
#34 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('main.col')
#35 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout->renderNonCachedElement('main.col')
#36 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout->renderElement('main.col')
#37 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('admin.scope.col...')
#38 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout->renderNonCachedElement('admin.scope.col...')
#39 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout->renderElement('admin.scope.col...')
#40 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('page.main.conta...')
#41 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout->renderNonCachedElement('page.main.conta...')
#42 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout->renderElement('page.main.conta...')
#43 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('page.content')
#44 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout->renderNonCachedElement('page.content')
#45 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout->renderElement('page.content')
#46 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('page.wrapper')
#47 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout->renderNonCachedElement('page.wrapper')
#48 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout->renderElement('page.wrapper')
#49 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('backend.page')
#50 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout->renderNonCachedElement('backend.page')
#51 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout->renderElement('backend.page')
#52 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('root')
#53 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout->renderNonCachedElement('root')
#54 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Layout.php(938): Magento\Framework\View\Layout->renderElement('root')
#55 /home/wwwroot/shopkey.doyustudio.com/var/generation/Magento/Framework/View/Layout/Interceptor.php(37): Magento\Framework\View\Layout->getOutput()
#56 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Result/Page.php(243): Magento\Framework\View\Layout\Interceptor->getOutput()
#57 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/View/Result/Layout.php(164): Magento\Framework\View\Result\Page->render(Object(Magento\Framework\App\Response\Http\Interceptor))
#58 /home/wwwroot/shopkey.doyustudio.com/var/generation/Magento/Backend/Model/View/Result/Page/Interceptor.php(24): Magento\Framework\View\Result\Layout->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#59 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/App/Http.php(139): Magento\Backend\Model\View\Result\Page\Interceptor->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#60 /home/wwwroot/shopkey.doyustudio.com/vendor/magento/framework/App/Bootstrap.php(258): Magento\Framework\App\Http->launch()
#61 /home/wwwroot/shopkey.doyustudio.com/pub/index.php(37): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http))
#62 {main}

I tried to view the database. And I found the difference between those shipment which failed and works. The column "packaged" is different. For those works, shows a:0:{} For those fails, shows s:6:"a:0:{}";

This error not happened for all orders. For newer order, it works fine. But few days passed, I'm not sure what changes. It goes wrong.

We moved our site to another server recently. And this error is start to happen after that. But I don't know what can I provide for more info. I really have no idea about this issue :( If need any extra info, could you please tell me?

Thank you, every body :)

1
  • You have to check in "sales_shipment" table. Thanks, Sush Commented May 24, 2018 at 1:34

3 Answers 3

1

The issue here is with the return value of Magento\Shipping\Block\Adminhtml\Order\Packaging. That is the class that is being used by the template as its block. Here are the contents of line 12 in the template:

<?php foreach ($block->getPackages() as $packageId => $package): ?>

What's happening is that a string value is likely being set to the packages data key in the Shipment model, Magento\Sales\Model\Order\Shipment. You need to ensure that an array is returned from that method, even if it is an empty array.

Now, before you make changes to the template or model, look at this: the serialized data in the packaged column reflects that: a:0:{} is a serialized empty array, while s:6:"a:0:{}"; is a serialized string that contains the string for a serialized empty array.

Somehow, that value is being serialized an extra time. You need to ensure that it is not reserialized if it is already serialized. That may fix the whole problem for you, as I'd guess that the issue is likely happening only with orders that are somehow being resaved, as that would explain that value being serialized a second time.

Please let me know if you have any other questions!

3
  • Thank you for explain, cause I don't understand what the packages mean in the database. Thank you for explanation. I'm not sure why it reserialized. I guess I have to keep watch and find out what's cause that. For now, I edit all s:6:"a:0:{}"; to a:0:{}, for me, this is the only way to solve it now
    – 楊翔宇
    Commented Mar 16, 2017 at 16:25
  • @楊翔宇 I am facing this issues for all Shipping orders when I navigate to Shippings the unde a shipping action view I get the error: 1 exception(s): Exception #0 (Exception): Warning: Invalid argument supplied for foreach() in /vendor/magento/module-shipping/view/adminhtml/templates/order/packaging/packed.phtml on line 12 How did you go about to fix this what table should I look for? thanks Commented May 15, 2018 at 18:43
  • hi,I backed up the database. and change the value in the database.
    – 楊翔宇
    Commented Oct 24, 2018 at 6:30
1

I had the same issue and I solved it by running this query in magento database:

UPDATE `sales_shipment`
SET packages = '[]';

I did this because I noticed that shipments working normally had packages = '[]'.

On the other hand shipments displaying the error had packages = '"[]"';

I have no idea what cause this though.

4
  • Is this proper solution for this issue? Commented Mar 15, 2019 at 7:23
  • And have an any idea about this issue, how it is reproduce? Commented Mar 15, 2019 at 7:24
  • I suppose it's an ok solution. It worked and didn't cause any other issue in my website. You can take a database backup and try it.
    – zekia
    Commented Mar 15, 2019 at 7:51
  • But this would delete any existing packaging that have been shipped, wouldn't it? Commented Jun 17, 2019 at 9:17
0

I used this command in mysql, it's a proper solution inspired by @zekia solution

UPDATE `sales_shipment` SET `packages`='[]' WHERE `packages` = '"[]"' 

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.