我正在symfony应用程序中实现向导式流程。它有“后退”和“下一步”的附加按钮,我可以控制每个表单提交后用户指向的页面。
我想了解一些用户处于向导模式后如何锁定路由的建议,即如果处于向导模式,他们只能访问向导过程中使用的5个页面。如果他们在向导模式下尝试导航到其他路由,则会重定向回到向导所在的最后一条已知路由。
我可以进入每个操作并在向导模式下添加重定向,但这似乎是错误的方法。
答案 0 :(得分:1)
此处Symfony filter是一个不错的选择。
将myWizardFilter.class.php放在应用程序库文件夹中:
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