在Prestashop中重定向期间丢失错误

在Prestashop中重定向期间丢失错误,prestashop,Prestashop,我已经重写了Prestashop ordercontroller.php文件 其中有一个switch语句,它根据我们所处的步骤数执行某些任务 当我执行步骤1时,如果存在某些错误,我需要返回到步骤0。现在,如果我重定向到步骤0,我设置的错误将丢失。我设置错误如下 if(some condition) { $this->errors[] = 'There is an error'; Tools::redirect('index.php?controller=order'

我已经重写了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步。

尽管这个问题已经很老了,但它可能会帮助某些人:

PrestaShop创建的重定向是一个302(HTTP)重定向,它会导致用户的浏览器请求一个不同的URL作为一个全新的请求。这就是旧请求的错误丢失的原因


在PHP switch语句的步骤之间切换是不可能的(AFAIK),但是您可以简单地将代码从步骤0移到一个专用的方法中。因此,如果您在步骤1中遇到任何错误,只需调用包含步骤0相关代码的方法,就像您在步骤0中实际遇到的情况一样。

即使这个问题已经很老了,它可能会帮助某些人:

PrestaShop创建的重定向是一个302(HTTP)重定向,它会导致用户的浏览器请求一个不同的URL作为一个全新的请求。这就是旧请求的错误丢失的原因

在PHP switch语句的步骤之间切换是不可能的(AFAIK),但是您可以简单地将代码从步骤0移到一个专用的方法中。因此,如果您在步骤1中遇到任何错误,只需调用包含步骤0的相关代码的方法,就像您实际在步骤0中一样