私は CakePHP を初めて使用します。アプリケーションで URL を書き換えたいと考えています。
一部のコントローラーについては、ナビゲートしたい。
`controller/action/id/slug`.
このため、ルールを次のように記述します。
Router::connect(
'/products/:id/:slug', array('controller' => 'products', 'action' => 'view'), array('pass' => array('id'), 'id' => '[0-9]+')
);
私はリンクを書いています..
echo $this->Html->link($record['Category']['name'], array('controller' => 'categories', 'action' => 'index', 'slug' => $record['Category']['slug']), array('escape' => false));
質問
上記のコントローラーとアクション、つまり製品とビューの応答へのルールのみの適用です。?
URL (ホバー時) が
controller/action/slug:slug_name
ではなくとして表示されるのはなぜcontroller/action/slug_name
ですか?action/id/slug_name
同じコントローラーで、送信した/action
場所や slug のみを使用する場所など、異なる URL 書き換えを使用したいと考えていますaction/slug_name
。すべてに対して単一のルールのみが記述されていますか? または、コントローラーとアクションごとに個別のルールを定義する必要があります。すべてのコントローラーにも共通のルールを作成しますか?
もっと説明してください。ドキュメントを読み込もうとしましたが、少し混乱しました。私のパラメーターが、私が言及したすべての種類のリクエストを取得する方法。
今書いてください私はパラメータを取得するために単純な方法だけを使用しています
controller/action/param1:param_val1/param2:param_val2,
echo $this->Html->link('Val', array('controller' => 'categories',
'action' => 'index', 'param1' => param_val1, 'param2' => param_val2,),
array('escape' => false));
等々。しかし、私はより良い、より速い動きとともに、かなり明確で美しいURLを持ちたいと思っています. slug を渡すように、findBySlug を直接取得するか、何らかの方法でより適切に取得したいと考えています。