Symfony2のコントローラをサービス化した時のRouteアノテーション
ほとんど個人的備忘録。
"symfony2 controller service"あたりでググってみると色々と出てきますが、以下のサイトにうまくまとめられています。
ポイントは以下の3つ。
- コントローラはSymfony\Bundle\FrameworkBundle\Controller\Controllerクラスのサブクラスである必要はない
- コントローラを他のサービスクラスと同様、services.xmlに登録する
- コントローラのRouteアノテーションに上で登録したサービスIDを指定する
これでうまく動作するんですが、最後のRouteアノテーションでの指定方法
<?php /** * @Route(service = "matthias_registration.registration_controller") */
がどこから出てきたのか?ドキュメントに載ってないし疑問だったんですが、どうやらver.2.0版のドキュメントではなく、master版に記載されていました。
ちなみに、
<?php /** * @Route("/test", service = "matthias_registration.registration_controller") */
といった他のオプションを付けることもできます。