Changeset 13514
- Timestamp:
- 06/08/08 21:54:06 (5 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
websites/zf-users.jp/public/application/default/views/scripts/codes/create-custom-routes.phtml
r13481 r13514 29 29 <dd>標準カスタムルーティング↑の次に使われていて、正規表現を使って複雑なURLを扱えます。 "/archive/2006/02/01/Foo.html"</dd> 30 30 <dt><a href="http://framework.zend.com/manual/ja/zend.controller.router.html#zend.controller.router.routes.static">Zend_Controller_Router_Route_Static</a></dt> 31 <dd>おそらく4つの中では最も使われていないと思います。しかしパフォーマンスでは一番です。URLが「パターン」を要求しない場合や、変数を解析しない場合に使用することができます。例えば、"/login/ SpotSec" や "/login/key/value" などを必要としないなら "/login" にできます。。</dd>31 <dd>おそらく4つの中では最も使われていないと思います。しかしパフォーマンスでは一番です。URLが「パターン」を要求しない場合や、変数を解析しない場合に使用することができます。例えば、"/login/hoge" や "/login/key/value" などを必要としないなら "/login" にできます。。</dd> 32 32 </dl> 33 33 34 34 <h3>Zend_Controller_Router_Route</h3> 35 <P>"http://yoursite.com/accounts/auth/login" を "http://yoursite.com/login" と "http://yoursite.com/login/ SpotSec" にマッピングしてみます。</p>35 <P>"http://yoursite.com/accounts/auth/login" を "http://yoursite.com/login" と "http://yoursite.com/login/hoge" にマッピングしてみます。</p> 36 36 <p>まず最初に bootstrap で ルーターオブジェクトを取得する必要があります。フロントコントローラで以下のようにします。</p> 37 37 <pre name="code" class="php"> … … 52 52 </pre> 53 53 54 <p>"login/:username" の :username は "login" 以下の "/login/SpotSec" などの場合を定義します。</p> 55 <p>"/login/username/SpotSec" へのショートカットです。 "SpotSec" は $this->getRequest()->getParam('username'); を使うとコントローラーから取り出せます。</p> 54 <p>"login/:username" の :username は "login" 以下が "/login/hoge" などの場合を定義します。これは "/login/username/hoge" へのショートカットです。 "hoge" は $this->getRequest()->getParam('username'); を使うとコントローラーから取り出せます。</p> 56 55 57 <p>アスタリスク 「*」 はどんな key/value にも当てはまるので こんなふうにもマッチします。("/login/ SpotSec/key/value/key/value")</p>56 <p>アスタリスク 「*」 はどんな key/value にも当てはまるので こんなふうにもマッチします。("/login/hoge/key/value/key/value")</p> 58 57 59 58 <p>次はデフォルトの配列です。この配列はルーティングがどこに位置するのか、そして "username" のようなデフォルト変数が何に等しいかを定義します。また、URLに "username" が含まれている場合と含まれていない場合の定義もします。もし 'username' => null が定義されていない場合、 "http://yoursite.com/login" は404エラーを返します。しかし 'username' => null が定義されていれば "http://yoursite.com/login" にアクセスできます。</p> 60 59 61 <p>最後の配列はオプションです。しかし "login/ SpotSec" で "SpotSec" が文字列や数値かを確認したい場合役立ちます。この配列のファーマットは 'key' => 'regexp' です。<br />60 <p>最後の配列はオプションです。しかし "login/hoge" で "hoge" が文字列や数値かを確認したい場合役立ちます。この配列のファーマットは 'key' => 'regexp' です。<br /> 62 61 (原文にはテストしていないと書いてあるので要確認 <a href="http://framework.zend.com/manual/ja/zend.controller.router.html#zend.controller.router.routes.standard.variable-requirements">7.5.6.1.2. 変数の制約</a>) (試してみたらたぶんうまくいってました)</p> 63 62 64 <p>The result? http://yoursite.com/login || http://yoursite.com/login/ SpotSec || http://yoursite.com/login/SpotSec/lang/en</p>63 <p>The result? http://yoursite.com/login || http://yoursite.com/login/hoge || http://yoursite.com/login/hoge/lang/en</p> 65 64 66 65 <h3>Using Zend_Config to Define Routes</h3> … … 109 108 </pre> 110 109 111 <p>(e.g. http://yoursite.com/login/hoge ra/aaa/bbb にアクセスした場合)</p>110 <p>(e.g. http://yoursite.com/login/hoge/aaa/bbb にアクセスした場合)</p> 112 111 <pre name="code" class="php"> 113 112 string(5) " … … 115 114 array(6) { 116 115 ["username"]=> 117 string(6) "hoge ra"116 string(6) "hoge" 118 117 ["aaa"]=> 119 118 string(3) "bbb"
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)