我有一個基本的控制器操作,它執行findByKey()。 URL可能看起來像:CFWheels - 如果params.key不存在,則直接使用用戶?
/銷/顯示/ 45
但是,如果 '45' 是不存在(的params.key),我想重定向他們剛剛/銷/。
此刻,當沒有指定鍵時,它似乎仍然顯示所有帖子的顯示操作。我對此有點困惑。另外,如果我在params.key的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
);
}
任何幫助,將不勝感激!
謝謝, 邁克爾。
更新:
看來,這可能是與路線?下面是我的路線針,如下所示:
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/controller和action中,但仍顯示URL中的/ pin/show /。
該代碼是否將其放入if語句中?定義的關鍵是空白嗎? –
無論params.key是否顯示在結構中,if語句中的代碼都不會執行。有趣的是,當我拋出參數時,我看到這個動作就是索引。所以就好像當一個記錄沒有被發現時,它只是加載默認動作 - 不是我想要的,因爲URL仍然顯示/ pin/show/ –