routing.yml について: 基本と応用

Date
2007-07-12 (Thu)
Category
symfony

最近 Symfony framework で開発するようになりました。まだ使いこなしていない部分も数多くありますが、とても便利です。

中でも今日は Askeet チュートリアル 4 日目: リファクタリング などで紹介されている routing.yml についてすこし解説しておきたいと思います。

基本

routing.yml はアプリケーション内での URL の規約を設定するファイルです。以下のような特徴があります。

応用

リクエストの時、

  1. 何も値がなかったら、全ての値を返し、
  2. 引数が2つ以上あったら、最初の2つをキーにした値を返し、
  3. それ以外は 404

とかはよくありそうな話です。先ほどの例と同じく、http://example.com/askeet に symfony web directory がmap されているとしましょう。まずは正解から

part:
 url:    /api/list/:id1/:id2/*
 param:  { module: api, action: list }
error: url: /api/list/:id1/* param: { module: api, action: list }
all: url: /api/list/* param: { module: api, action: list }

大事なのは api_list_error の項目が api_list よりも後に定義されているという事ですね。あと error と all の両方のエントリの最後が * で終わっている事。そうしないと、例えば http://example.com/askeet で来たのは拾えても、 http://example.com/askeet/ で来たのは拾えません。

そして受け取るアクションでは、以下のようなコードを書くといいかもしれません。

$req1 = $this->getRequestParameter('id1');
$req2 = $this->getRequestParameter('id2');
switch (true) { case (is_null($req1) && is_null($req2)): $result = "all"; break;
case (isset($req1) && isset($req2)): $result = "partial select"; break;
default: $this->forward404(); break; }

まとめ

routing.yml について解説しました。順番が大事であるという事、* をつける事の有無などの考察は何となくわかっていても、書き出してみる事で自分中でもすっきりまとまりました。

参考

Comment:0

Comment Form

Remember Me?


Trackback:0

TrackBack URL for this entry
http://blogs.grf-design.com/mt/mt-tb.cgi/224
Listed below are links to weblogs that reference
routing.yml について: 基本と応用 from The Croton

Return to Page Top