1

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 に移行します。

4

1 に答える 1