我正在尝试操作 actionPresentOrder 挂钩中的产品数组,如下所示:
public function hookActionPresentOrder($params)
{
foreach ($params['presentedOrder']['products'] as &$product) {
$product['image'] = 'test;
}
}
但是,这会产生以下错误:
Notice: Indirect modification of overloaded element of PrestaShop\PrestaShop\Adapter\Presenter\Order\OrderLazyArray has no effect
欢迎任何有关如何修改产品数组的建议。
我发现以下方法对我有用: $params['presentedOrder']->offsetSet('products', $products, true);
不确定这是否是正确的方法,如果不正确请纠正
那只是因为
$params
必须是一个引用,而不是一个值。试试这个:
function hookActionPresentOrder(& $params) {
}
(注意
&
)。
我认为这段代码会有帮助
public function hookActionPresentOrder(&$params)
{
$params['presentedOrder']->appendClosure('products', function() use ($params) {
$products = $params['presentedOrder']->getProducts();
foreach ($products as &$product) {
$product['name'] = 'my new product name';
}
return $products;
});
}