我已经覆盖了 Prestashop ordercontroller.php 文件。
其中有一个 switch 语句,它根据我们所处的步数执行某些任务。
当我在第 1 步时,如果出现某些错误,我需要返回第 0 步。现在,如果我重定向到第 0 步,我设置的错误就会丢失。我设置错误如下。
if(some condition)
{
$this->errors[] = 'There is an error';
Tools::redirect('index.php?controller=order');
}
我认为发生的是 prestashop 在重定向中生成了一个新请求,并且控制器中设置的错误丢失了。现在有另一个选项可以更改步骤和 switch 语句,但由于 case 语句已经在执行,我似乎不可能切换步骤。
示例代码:
switch($step)
{
case 0:
//load the step 0
break;
case 1:
//load the step 1
checkforerrors();
break;
case 2:
//load the step 2
break;
case 3:
//load the step 3
break;
}
现在第 1 步中的函数 checkforerrors() 想要转移到第 0 步。