0

私はそのような構造を持っています:

  • example.com / MyController / index / MyGoodPage / maximum/
  • example.com / MyController / index / MyBestPage /optimized/
  • example.com / MyController / index / MyFancyPage / 低価格/

しかし、訪問者に「インデックス」という言葉を見せたくありません。それ以上の情報を提供するものではないからです。次のような URL が必要です。

  • example.com / MyController / MyGoodPage / maximum/
  • example.com / MyController / MyBestPage / 最適/
  • example.com / MyController / MyFancyPage / 低価格/

しかし、これをデフォルトの Cake-way で行うには、状況を処理するために何百ものアクションを個別に作成する必要があります。すべてのアクションを作成したくありません。1 つのアクションを作成してから、関連するコンテンツを表示する必要がありますrequest->params['pass']

出来ますか?

4

2 に答える 2

2

これはルーティングの仕事です:http://book.cakephp.org/2.0/en/development/routing.html そしてこれは実際にはコアPagesControllerのdisplayメソッドに対してデフォルトで行われることです:

Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));

あなたはあなたのコントローラーのために同じことをすることができます

Router::connect('/controller_name/*', array('controller' => 'controller_name', 'action' => 'index'));
于 2012-12-15T13:53:18.570 に答える
1

すでに回答を選択していますが、こちらがより良い回答です。

Router::connect('/controller_name/*', array(...)); 上記のように、何にでも一致するため、アクセスすることはできなくなります/controller_name/delete

Router::connect('/contorller_name/:something', array(...));たとえば[maximum|optimum|lowprice] のような貪欲でないルートを選択し、正規表現を指定する必要があります。

somethingこれを行うと、コントローラーに渡されるように指定することもでき、それは次のように利用可能になります$this->request->something

于 2012-12-16T02:00:23.400 に答える