Webメディア開発日記

最近は、RubyとPHPを利用しております。

全体表示

[ リスト ]

前回に、Routesの設定例をみてきた。




今回は、実際にどういう使い方ができるのか例を元に記していきたい。

1. Routesサンプル


1.1. 基本的な設定


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

1. /pages/ではじまるURLのすべてにマッチする。
2. PagesControllerのdisplayメソッドに渡す。

/pages/productsというリクエストは、「PagesController->display('products')」にマップされる。


1.2. URLとcontrollerの名称を変える


	Router::connect('/kaiin/*', array('controller' => 'members', 'action' => 'index'));

1.1とほぼ一緒ですが、念のためURLとcontrollerの名称が異なっても動くか確認をしました。

1.3. aliasとして利用してみる


	Router::connect('/kaiins/', array('controller' => 'members', 'action' => 'index', 5));

1. /kaiins/でアクセスした場合の設定。
2. MembersControllerのindexメソッドに渡す。引数は、5が固定で渡される。

コントローラーの別名(alias)などを利用したいときに使うことができる。

1.4. 独自のパラメーター名を利用する


	Router::connectNamed(array('type'));
	Router::connect('/kaiinss/:action/*', array('controller' => 'members'));

1. /kaiinss/index/type:chefでアクセスした場合の設定。
2. MembersControllerの:actionメソッドに渡す。(Actionは、動的です。)
3. $this->passedArgs['type'];としてアクセスするとValues値を取得することでできます。


1.4. 独自のパラメーター名を利用する



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

1. /members/5でアクセスした場合
2. MembersControllerのviewメソッドを呼び出す。
3. idが[0-9]の数値だった場合、このルールが実行される。

  例 実行されるケース
     /members/5の場合
  例 実行されないケース
     /members/typeの場合
     
Error: The action type is not defined in controller MembersController

実行されないケースの場合は、こんな感じで解釈されてしまう。

1.5. 日付の様なURLを作成してみる。


	Router::connect(
		'/:controller/:year/:month/:day', 
		array('action' => 'index', 'day' => null),
		array(
			'year' => '[12][0-9]{3}',
			'month' => '0[1-9]|1[012]',
			'day' => '0[1-9]|[12][0-9]|3[01]',
		)
	);

1. /members/2009/12/15というURLでアクセスした場合
2. MembersControllerのindexメソッドが実行される。
3. パラメーターは、$this->params['year']などの形で取得することができる。


2. サンプルを作成していて気付いたこと


サンプルを作成していて、うまくいかないことがあったのでデバッグしながら
実行したところがありました。
「1.5. 日付の様なURLを作成してみる」などありえない日付を指定してしまい
なぜだめなのか躊躇しました。

2.1. router.phpのconnectメソッド


var_dump($route);

などとするとこんな形で定義されているroutesを確認できました。

string(1) "/" string(8) "/pages/*" string(30) "/:controller/:year/:month/:day" string(18) "/admin/:controller" string(28) "/admin/:controller/:action/*" string(12) "/:controller" string(22) "/:controller/:action/*"

2.1. リクエストパラメーターの中身をみる



pr($this->params);という文をコントローラーに記載すると確認できました。

イメージは、こんな感じです。

Array
(
    [controller] => members
    [year] => 2009
    [month] => 12
    [day] => 15
    [named] => Array
        (
        )

    [pass] => Array
        (
        )

    [action] => index
    [plugin] => 
    [form] => Array
        (
        )

    [url] => Array
        (
            [url] => members/2009/12/15
        )

)

どんな感じで実行されているか確認できました。


--- 新しいお店を追加しました。
小型ワンコ用
iDog
工場直販、犬の服・猫の首輪オンラインショップ。小型犬から大型犬まで対応。縫製工場から直接お届けするので、低価格で高品質です。

CRAZY BOO
犬の服のアパレルメーカーCRAZYBOO。犬の服や犬具等を企画/製造/販売。螢▲襯ロースが運営しています。

ポンポリース
人とペットのライフスタイルを提案するポンポリース 犬服の通販ショップ「ポンポリース」

dogskip
ドッグウェアのセレクトショップ「DogSkip ドッグスキップ」犬の洋服・犬のカラー(首輪)・犬のリード・犬のハーネス(胴輪)が豊富! PUPPIA,PINKAHOLIC,パピア,ピンカホリック

abbypet
英国・米国・イタリアから直輸入のドッググッツ専門店へようこそ!:abbypetへようこそ。

閉じる コメント(0)

コメント投稿

顔アイコン

顔アイコン・表示画像の選択

名前パスワードブログ
絵文字
×
  • オリジナル
  • SoftBank1
  • SoftBank2
  • SoftBank3
  • SoftBank4
  • docomo1
  • docomo2
  • au1
  • au2
  • au3
  • au4
投稿

.


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事