1

我有一个基本的应用程序正在运行,如果他们尝试访问的操作不在控制器中,我希望用户被重定向到主要的基本操作。

我设置了一些路线:

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");

目前,如果用户键入/pin/something/URL,则加载的操作是 index,但仍停留在该 URL 上。我想做一个 301 重定向,而不是简单地加载到默认操作视图等中。

我以为我可以使用控制器中的验证功能来做到这一点,但它似乎不起作用。

verifies( except="index,show", handler="invalidAction" );

我的处理程序是:

private void function invalidAction() {

    flashInsert( messages = [{ messageString="Invalid action.", messageType="info" }] );
    redirectTo(route="pin");

}

这些都不起作用。有什么想法吗?

我即将上线,这只是我想要收紧的东西!我宁愿杀死一个带有 404 或重定向的链接,而不是加载默认操作。

4

2 回答 2

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起作用。

于 2013-07-15T13:12:58.833 回答
1

@Michael Giovanni Pumo,您可以使用车轮的 onmissingtemplate 事件,您可以在那里编写一个函数来重定向到主页

于 2013-07-15T13:00:17.720 回答