url と controller, action のマッピングメモ

| | コメント(0) | トラックバック(0)



※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 はパラメータとして渡されない。


ぽい。


メモ。


トラックバック(0)

このブログ記事を参照しているブログ一覧: url と controller, action のマッピングメモ

このブログ記事に対するトラックバックURL: http://pm.11op.net/mt/mt-tb.cgi/69

コメントする