Php 如何在prestashop中将变量从控制器传递到控制器?

Php 如何在prestashop中将变量从控制器传递到控制器?,php,controller,prestashop,Php,Controller,Prestashop,在prestashop中有没有一种方法可以将变量从一个控制器传递到另一个控制器?我尝试在AddressController覆盖上传递新的_address变量,如下所示: Tools::redirect('index.php?controller='.$back.($mod ? '&back='.$mod : '') . '&new_address=' . $address->id); $url = Tools::strReplaceFirst('&', '?',

在prestashop中有没有一种方法可以将变量从一个控制器传递到另一个控制器?我尝试在AddressController覆盖上传递新的_address变量,如下所示:

Tools::redirect('index.php?controller='.$back.($mod ? '&back='.$mod : '') . '&new_address=' . $address->id);
$url = Tools::strReplaceFirst('&', '?', $url); 
请注意,这是原始行+
'&新地址='$地址->id
,所以我必须坚持使用
Tools::redirect


通过使用该行,在$\u GET的下一页上找不到新的\u地址。从OrderController和ParentOrderController中,我也看不到它。

我在Tools::redirect中找到了原因。它有这样一条线:

Tools::redirect('index.php?controller='.$back.($mod ? '&back='.$mod : '') . '&new_address=' . $address->id);
$url = Tools::strReplaceFirst('&', '?', $url); 
在这里,它们基本上排除了除第一个queryvar之外的任何queryvar,因此如果添加一些,您将找不到任何queryvar。如果你有
index.php?a=1&b=2
,你会得到
index.php?a=1?b=2
。我真的不明白重点。。。也许是个虫子

所以我重写了Tools::redirect,如下所示(修改的行被注释):


您确定行正在执行吗?如果它可能是在中间做另一个重定向。是的,我确信它是被执行的,并且我找到了工具::重定向失败的原因,我正在编码一个重写,然后我会发布一个正式的答案。