我在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