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