0

symfonyアプリケーションにウィザードスタイルのプロセスを実装しています。「戻る」と「次へ」の追加ボタンがあり、各フォームが送信された後にユーザーがどのページに移動するかを制御します。

ユーザーがウィザードモードになったらルートをロックダウンする方法についていくつか提案があります。つまり、ウィザードモードの場合、ウィザードプロセスで使用される5ページにしかアクセスできません。ウィザードモードで他のルートに移動しようとすると、ウィザードがあった最後の既知のルートにリダイレクトされます。

ウィザードモードの場合、各アクションに移動してリダイレクトを追加できますが、これは間違ったアプローチのようです。

4

1 に答える 1

1

ここではSymfony フィルターが適しています。

  • myWizardFilter.class.php をアプリケーションの lib フォルダーに配置します。

    class myWizardFilter extends sfFilter {
    
        public function execute ($filterChain) {
    
            if ($this->isFirstCall() && $wizardMode && $outsideWizard) {
    
                $controller = $this->getContext()->getController();
                $controller->forward('wizardModule', 'wizardAction');
                throw new sfStopException();            
    
            }
    
            $filterChain->execute();    
        }
    }
    
  • $wizardModeユーザーがウィザード モードであるかどうかを確認するには、チェックしたものに置き換える必要があります。
  • ユーザーがナビゲートしようとしたときにのみウィザード モードにリダイレクトされるように、ルートを確認する必要があります$outsideWizard。そうしないと、リダイレクト ループが発生します。
  • 次に、filters.yml にフィルターを追加します。

    wizard:
      class:   myWizardFilter
    
于 2012-04-24T03:33:29.443 に答える