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

时间:2012-12-20 10:45:26

标签: prestashop

我已经覆盖了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步。

1 个答案:

答案 0 :(得分:1)

即使这个问题很老,也可能对某人有所帮助:

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

无法切换PHP switch语句的步骤(AFAIK),但您只需将代码从步骤0的情况转移到专用方法即可。因此,如果您在步骤1中遇到任何错误,您只需调用包含步骤0的相关代码的方法,就像您实际上在步骤0中一样。