我在symfony應用程序中實現了嚮導式過程。它有'後'和'下'的額外按鈕,並且我控制了每個表單提交後用戶指向的頁面。Symfony安全 - 控制哪些路由可訪問
我希望在用戶處於嚮導模式時如何鎖定路由,也就是說,如果在嚮導模式下,他們只能訪問嚮導過程中使用的5個頁面。如果他們嘗試在嚮導模式下導航到其他路由,則會重定向到嚮導所在的最後一個已知路由。
我可以進入每個操作並在嚮導模式下添加重定向,但這看起來像是錯誤的方法。
我在symfony應用程序中實現了嚮導式過程。它有'後'和'下'的額外按鈕,並且我控制了每個表單提交後用戶指向的頁面。Symfony安全 - 控制哪些路由可訪問
我希望在用戶處於嚮導模式時如何鎖定路由,也就是說,如果在嚮導模式下,他們只能訪問嚮導過程中使用的5個頁面。如果他們嘗試在嚮導模式下導航到其他路由,則會重定向到嚮導所在的最後一個已知路由。
我可以進入每個操作並在嚮導模式下添加重定向,但這看起來像是錯誤的方法。
A Symfony filter是一個很好的選擇。
把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
謝謝Kenny - 這正是我需要的。 – Trevelyan005 2012-04-24 15:32:37
我認爲你應該使用[過濾器](http://www.symfony-project.org/gentle-introduction/1_4/en/06-Inside-the-Controller-Layer#chapter_06_filters)將用戶轉發給嚮導。 – 1ed 2012-04-23 21:55:51