WordPressやSymfonyのTipsを中心にアニメや日常の出来事について語ります。
メニュー

【Symfony2】RoutingはAnnotationで記述すると管理が楽になる!

この記事は約2分25秒で読めます

Symfony2 Routing Annotation
ゆっきー
ども、カフェブロガーの悠木です。 お気に入りのカフェはドトールコーヒーです。 14時からの限定スイーツ「シューシャポー」が大好きです。

Symfony2のルーティングの記述について。

ルーティングとはリクエストされた URL に対して呼び出すアクションを決定する仕組みのことです。(URLルーティング)
ブラウザからリクエストを受け取ると、このルーティングルールに該当するURLかどうかチェックされ、定義したアクションが呼び出されます。

http://www.sample.net/コントローラ名/アクション名/引数1/引数2/...

日本Symfonyユーザー会のルーティングのページではYAML, XML, PHPでルーティングを記述する例が紹介されています。

ただ、この書き方ですとコントローラーでアクションを作成するたびにルーティングファイルを追記する必要があります。これは手間がかかるのでアノテーション(annotation)で記述する方法を私はおすすめします。

参考サイト

アノテーション(annotation)の記述方法

routing.ymlの記述

アノテーションを有効にするためapp/config/routing.ymlに追記します。

これでアノテーションでルーティングの指定が行えます。

コントローラーの記述

コントローラーではアノテーションのルーティングの記述はこのようになります。

@Route

@Route("/", name="post")

http://www.sample.net/blog/とアクセスがあった場合は
PostControllerindexActionが呼び出されることになります。

URL引数からデータを渡したい時はプレースホルダー付きのルートを指定できます。

@Route("/show/{id}", name="post_show")

http://www.sample.net/blog/show/123とアクセスがあった場合は
PostControllershowActionが呼び出されることになります。

$idには123が渡されます。

また、URL引数はデフォルト値を設定することもできます。

@Route(“/show/{id}”, name=”post_show”, defaults={“id” = 1})

@Method

@Method("GET")と指定しているのでPOSTの場合は呼ばれません。

@Template

@Template()テンプレートを指定しない場合はResources/views/Post/index.html.twigが使用されます。
テンプレートを指定したい場合は@Template("SensioBlogBundle:Post:new.html.twig")といった感じです。

さいごに

初めてSymfony2でプロジェクト開発をしていたときはyamlでルーティングの記述をしていました。ルートとアクションを別々のファイルで管理するのはけっこう手間でした。

yamlで管理しているとどちらかを修正したらもう片方も修正しなくてはいけなくて不便でした。
コントローラを新しく作成する場合もRouting.ymlをイジる必要がありますし。

なのでアノテーションで書くようにすると開発効率もグッと良くなると思います。

Symfony2おすすめ書籍

関連記事

  1. Twigロゴ
  2. Symfony Cache Clear
  3. Symfony2 Monolog
  4. Symfony2 blogチュートリアル 02 Symfony ディレクトリ構造
  5. symfony2
  6. symfony2

コメントをお待ちしております

PR

カテゴリー