在 Prestashop 1.7.8.x 中的 actionPresentOrder 挂钩中操作产品数组

问题描述 投票:0回答:3

我正在尝试操作 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

欢迎任何有关如何修改产品数组的建议。

prestashop prestashop-1.7
3个回答
1
投票

我发现以下方法对我有用: $params['presentedOrder']->offsetSet('products', $products, true);

不确定这是否是正确的方法,如果不正确请纠正


0
投票

那只是因为

$params
必须是一个引用,而不是一个值。试试这个:

function hookActionPresentOrder(& $params) {

}

(注意

&
)。


0
投票

我认为这段代码会有帮助

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;
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.