0

我在我的 symfony 应用程序中实现了一个向导式的进程。它还有用于“返回”和“下一步”的附加按钮,并且我控制在提交每个表单后将用户定向到哪些页面。

我想要一些关于一旦用户处于向导模式后如何锁定路线的建议,即如果处于向导模式,他们只能访问向导过程中使用的 5 个页面。如果他们在向导模式下尝试导航到其他路线,它会重定向回向导所在的最后一个已知路线。

如果在向导模式下,我可以进入每个操作并添加重定向,但这似乎是错误的方法。

4

1 回答 1

1

Symfony 过滤器在这里是一个不错的选择。

  • 将 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
    
于 2012-04-24T03:33:29.443 回答