findByKey() を実行する基本的なコントローラー アクションがあります。URL は次のようになります。
/ピン/ショー/45
ただし、「45」が存在しない場合 (params.key)、/pin/ だけにリダイレクトしたいと考えています。
現時点では、キーが指定されていない場合でも、すべての投稿で show アクションが表示されるようです。私はこれについて少し混乱しています。
また、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
);
}
どんな助けでも大歓迎です!
ありがとう、マイケル。
アップデート:
これはルートと関係があるようです。以下は、ピンのルートです。
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/ が表示されます。