CakePHP Note (v1.3) > 環境設定 > ルーティング

ルーティング

クライアントがリクエストするURLに対してアプリケーション内のコンントローラとアクションを実行させるかを特定するためにRouterクラスを用いて設定します。通常app/config/routes.phpファイルで設定します。

デフォルトのルーティング

基本的なルーティングです。

http://www.mydomain.com/myController/myAction/param1/param2/param3

これは、myControllerコントローラーのmyActionアクションを実行します。アクション以降のURLはパラメーターとしてアクションに渡されます。

http://www.mydomain.com/users/view/param1/param2/param3
$UsersController->view($param1,$param2,$param3);

アクション以降が省略されている時のマッピング

URLでアクション部分が省略されていると「index」アクションが呼ばれます。

http://www.mydomain.com/users/
$UsersController->index();

設定済みのルーティング

app/config/routes.phpファイルにいくつかのRouteが設定されています。


サイトのトップページのようにURLにコントローラー部分もなく、「/(ルート)」だけの場合は、PagesControllerコントローラのdisplayアクションが呼ばれます。

http://www.mydomain.com/
$PagesController->display('home');

これは、次のように設定されているからです。

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

また、次のようにも設定されています。*が指定されているのが分かります。*の部分にあたるURLの値がアクションのパラメーターとして渡されます。

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

具体的には以下のようにURLで*にあたる'infomation'がdisplayアクションのパラメータとして渡されます。

http://www.mydomain.com/pages/infomation
$PagesController->display('infomation');

ルーティングの指定方法

マッピングの書式は次の通りです。マッピングさせるURLを指定し、そのURLから呼び出すコントローラやアクション、パラメーターを指定、さらに正規表現でURLについての検証を行います。

	Router::connect('URL', array('パラメータ' => 'デフォルト値'), array('パラメータ' => '正規表現'));


PostsControllerのViewをURLから省略する例。コントローラでは$this->params['id']でurlの':id'にあたる数字を参照できます。

	Router::connect('/posts/:id', array('action' => 'view'), array('id' => '[0-9]+'));


同じ例で$this->params['id']ではなくアクションの引数として'id'の値を渡す方法。
'pass'キーワードを使います。

	Router::connect('/posts/:id', array('action' => 'view'), array('pass'=>array('id'),'id' => '[0-9]+'));

postsコントローラのviewアクションの引数として'id'の値が渡されます。


全てのコントローラーのURLからViewをから省略する例。':controller'の部分がコントローラーとして認識されます。

	Router::connect('/:controller/:id', array('action' => 'view'), array('id' => '[0-9]+'));

CakePHP Note (v1.3)

Index