背景
我正在创建一个电子商务控制器,有订阅计划注册。
这些操作驻留在一个控制器中,该控制器也将具有诸如
之类的操作 问题陈述:
我想重定向控制器中的所有操作,但选择一个计划,如果用户尚未选择计划。
示例:
在用户界面中,用户将看到其结算信息和订阅设置的链接,但如果他们点击这些链接并且他们没有选择计划,则会将其重定向到操作/页面以选择计划。
问题
我不想要的是在每个操作的开头放置一个if语句,用于检查用户是否有计划,以及他们是否不将它们重定向到pick-a-plan页面。似乎会有更好的方式。
答案 0 :(得分:1)
我认为在这种情况下,过滤器可以很容易地完成工作。 类似于以下过滤器的过滤器应该可以解决这个问题:
class MyFilter{
exceptPlan(controller:'myController',action:'pickPlan', invert:true){
before = {
if (!session.plan){
redirect action:'pickPlan'
return false
}
}
}
}