我有一个基本的控制器操作,它执行 findByKey()。URL 如下所示:
/pin/show/45
但是,如果“45”不存在(params.key),我想将它们重定向到 /pin/。
目前,当没有指定键时,它似乎仍然显示带有所有帖子的显示操作。我对此有点困惑。
此外,如果我检查 params.key 的 show() 操作,它不会按预期工作;我的重定向没有发生……即使转储参数,也没有显示密钥。
这是我的 show() 动作:
public void function show() {
if( !structKeyExists(params, "key") ) {
flashInsert( messages = [{ messageString="Key is required.", messageType="error" }] );
redirectTo(route="pin");
}
param name="params.page" default="1";
param name="params.pageQuantity" default="10";
pins = model("pin").findByKey(
key = params.key,
returnAs = "query",
include = "user",
order = "createdat DESC",
page = params.page,
perPage = params.pageQuantity
);
}
任何帮助,将不胜感激!
谢谢,迈克尔。
更新:
看来这可能与路线有关?以下是我的 pin 路线,如下:
addRoute(name="pinShow", pattern="pin/show/[key]", controller="pin", action="show");
addRoute(name="pinEdit", pattern="pin/edit/[key]", controller="pin", action="edit");
addRoute(name="pinDelete", pattern="pin/delete/[key]", controller="pin", action="delete");
addRoute(name="pinUpdate", pattern="pin/update", controller="pin", action="update");
addRoute(name="pinNew", pattern="pin/new", controller="pin", action="new");
addRoute(name="pinCreate", pattern="pin/create", controller="pin", action="create");
addRoute(name="pinWanted", pattern="pin/wanted", controller="pin", action="wanted");
addRoute(name="pin", pattern="pin", controller="pin", action="index");
现在,很多这些路由可能看起来毫无意义,因为它们使用与没有路由相同的 URL 模式,但计划是在未来更改这些。
当我在没有键的情况下点击 /pin/show/ 时,它似乎加载到 /pin/index/ 控制器和操作中,但仍然在 URL 中显示 /pin/show/。