我有一个基本的应用程序,如果他们尝试访问的操作不在控制器中,我希望用户被重定向到主基础操作。
我设置了一些路线:
addRoute(name="pinShow", pattern="pin/show/[key]", controller="pin", action="show");
addRoute(name="pinShow", pattern="pin/show", controller="pin", action="show");
addRoute(name="pin", pattern="pin", controller="pin", action="index");
目前,如果用户在URL中键入/pin/something/
,则加载的操作是索引,但仍保留在此URL上。我想进行301重定向,而不是简单地加载默认操作视图等。
我以为我可以使用我的控制器中的验证功能执行此操作,但它似乎无法正常工作。
verifies( except="index,show", handler="invalidAction" );
我的经纪人是:
private void function invalidAction() {
flashInsert( messages = [{ messageString="Invalid action.", messageType="info" }] );
redirectTo(route="pin");
}
这些都不起作用。有什么想法吗?
我即将上线,这只是我想收紧的事情!我宁愿杀死带有404或重定向的链接,而不是加载默认操作。
答案 0 :(得分:3)
您可以将路线更改为:
addRoute(name="pinShow", pattern="pin/show/[key]", controller="pin", action="show");
addRoute(name="pinShow", pattern="pin/show", controller="pin", action="show");
addRoute(name="pin", pattern="pin/[invalid]", controller="pin", action="invalidAction");
addRoute(name="pin", pattern="pin", controller="pin", action="index");
在这种情况下,您可能需要设置invalidAction
方法public
才能生效。
答案 1 :(得分:1)
@Michael Giovanni Pumo你可以使用轮子的onmissingtemplate事件,你可以写一个函数重定向到主页