2012-04-23 15 views
0

私はsymfonyアプリケーションでウィザードスタイルのプロセスを実装しています。それには 'back'と 'next'のための追加のボタンがあり、それぞれのフォームが送信された後にユーザーがどのページに向けられるかを制御します。symfonyのセキュリティ - アクセス可能なルートを制御する

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

ウィザードモードでは各アクションに入り、リダイレクトを追加できますが、 。

+0

私はあなたが[フィルタ]を使用すべきだと思う(http://www.symfony-project.org/gentle-introduction/1_4/en/06-Inside-the-Controller-Layer#chapter_06_filters)、ユーザーをウィザードに転送します。 – 1ed

答えて

1

Symfony filterが良い選択です。あなたは、ユーザーがウィザードモードであるか否かを確認し何を$wizardModeを交換する必要があります

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();  
    } 
} 
  • :アプリケーションのlibフォルダにmyWizardFilter.class.phpを入れ

    • ユーザーが$outsideWizardをナビゲートしようとしたときにウィザードモードにリダイレクトされるように、ルートを確認する必要があります。それ以外の場合は、リダイレクトループが発生します。
    • 次に、あなたのfilters.ymlにフィルタを追加します。

      wizard: 
          class: myWizardFilter 
      
  • +0

    ありがとうKenny - それは私が必要としていたものです。 – Trevelyan005

    関連する問題