0

背景:
我正在创建一个电子商务控制器,该控制器具有要注册的订阅计划。

  • 第 1 步:用户选择一个计划。
  • 第2步:然后输入他们的信用卡信息。

这些动作驻留在一个控制器中,并且该控制器还将具有诸如

  • 编辑信用卡信息
  • 改变他们的订阅计划
  • 取消计划等

问题陈述:如果用户尚未选择
计划 ,我想重定向控制器中的所有操作,除了选择计划。

示例:
在 UI 中,用户将看到他们的计费信息和订阅设置的链接,但如果他们单击这些链接并且他们没有选择计划,他们会被重定向到操作/页面以选择计划。

问题

  • 过滤器是处理这种情况的最佳场所吗?如果是,它将如何编码?
  • 除了使用过滤器之外,还有更好的方法吗?

我不希望在每个操作的开头放置一个 if 语句来检查用户是否有计划,以及他们是否不将他们重定向到选择计划页面。似乎会有更好的方法。

4

1 回答 1

1

我认为在这种情况下,过滤器可以很容易地完成工作。

类似于以下的过滤器应该可以解决问题:

class MyFilter{
    exceptPlan(controller:'myController',action:'pickPlan', invert:true){
        before = {
              if (!session.plan){
                   redirect action:'pickPlan'
                   return false
              }
        }
    }
}
于 2013-10-10T06:49:23.113 回答