2007-08-08
■[CakePHP][php]url と controller, action のマッピングメモ
※CakePHP1.2 の話です。
CakePHP で既存の controller, action を任意の url で実行するには
/app/config/routes.php にマッピングを記述すればよい。
例えば、マニュアルには /blog/history/05/june という url で
BlogController の history アクションに 05, june というパラメータを
渡す方法を書いてある。
次の例では、/blog のすべてのURLを、 BlogController に接続します。デフォルトのアクションは、 BlogController::index() になります。
例 4.3. Route の例
connect ('/blog/:action/*', array('controller'=>'Blog', 'action'=>'index'));
Routes の設定
でも実はこれ、特に設定しなくても普通に実行される。
何も設定しなくても、ディレクトリの第一階層は controller として扱われるし、
第二階層は action として扱われる。
そして、それ以下はパラメータになる。
マニュアルで言わんとしてるのは、これが任意の url で可能であるってことだ。
例えば、 /archive/05/june/ という url で上記と同じ action を実行するには、
以下のように記述するとよい。
Router::connect('/archive/*', array('controller' => 'blog', 'action' => 'history'));
また、 /blog ではなく、 /cms 以下全ての url を BlogController に接続するには、以下のようにする。
Router::connect('/cms/:action/*', array('controller' => 'blog', 'action' => 'index'));
ここまでがマニュアルに書いてあることだ。
試してみた限りでは、さらに /archives/something/category/ という url で、
BlogController の category アクションに、 "something" というパラメータを渡すことが可能だ。
こうする。
Router::connect('/archives/:pass/:action/*', array('controller' => 'blog'));
ただし、/archives/something/category/hoge/ としても、 hoge はパラメータとして渡されない。
ぽい。
メモ。
- 21 http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=669&forum=3&post_id=1252
- 2 http://reader.livedoor.com/reader/
- 2 http://www.google.co.jp/search?q=cakephp+validation&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 1 http://72.14.235.104/search?q=cache:IdOgF7w47usJ:pookmark.jp/user/tsupo/JavaScript?page=7+"IE7のバグ" actionscript&hl=ja&ct=clnk&cd=3&gl=jp
- 1 http://72.14.235.104/search?q=cache:Y-kCgnrxtMIJ:d.hatena.ne.jp/am11op/20070607/1181213835+cakephp+admin+メニュー&hl=ja&ct=clnk&cd=1&gl=jp&client=firefox-a
- 1 http://b.hatena.ne.jp/add?mode=confirm&title=$php%u2192rails %uFF08rails %u306B%u61A7%u308C%u308B phper %u306E%u30D6%u30ED%u30B0%uFF09 - url %u3068 controller, action %u306E%u30DE%u30C3%u30D4%u30F3%u30B0%u30E1%u30E2&url=http://d.
- 1 http://b.hatena.ne.jp/add?mode=confirm&url=http://d.hatena.ne.jp/am11op/20070808/1186585270
- 1 http://b.hatena.ne.jp/bookmarklist?url=http://d.hatena.ne.jp/am11op/
- 1 http://b.hatena.ne.jp/t/cakephp
- 1 http://fr.i75.org/feedshowall.php
