Symfony 2.7入門 その2 画面を追加してみる
今回は画面を追加してみましょう。
前回編集したsrc/AppBundle/Controller/DefaultController.php
に下記のようにメソッドを追加します。
+ /**
+ * @Route("/good_morning", name="morning")
+ */
+ public function morningAction()
+ {
+ return new Response('おはよう!');
+ }
コメント部の@Route(...)
に着目してください。
Symfonyでは、コメントの@部分によってアプリケーションの挙動を変更することができます。
これをアノテーションといいます。
@Routeを定義すると、URLとアクションを紐づけることができます。この紐づけをルーティングといます。 この場合、@Routeの第1引数 “/good_morning” がURLを表します。第2引数name=“morning"はそのルーティングの名前で、値は自分がわかりやすいなら何でもかまいません。
簡単に言うと、/good_morning
というURLにアクセスするとmorningAction
メソッドが呼ばれるということです。
実際にサーバを起動して挙動を確認してみましょう。
サーバを起動
$ php app/console server:run
URLにアクセス
http://localhost:8000/good_morning
これで画面に「おはよう」と表示されたらOKです。
画面を増やしたいときにはこのようにアクションメソッドをどんどん追加していけばよいです。
ルーティング一欄を確認する
さてアクションを追加すると、いまプロジェクト内にどんなルーティングがあるのか一欄したくなることがあるかもしれません。
(いまはルーティングが2個しかないのでそんな気持ちにはならないですが、一欄を見たくなったことにしてくださいw)
下記コマンドでルーティング一欄を見ることができます。
$ php app/console debug:route
[router] Current routes
Name Method Scheme Host Path
_wdt ANY ANY ANY /_wdt/{token}
_profiler_home ANY ANY ANY /_profiler/
_profiler_search ANY ANY ANY /_profiler/search
_profiler_search_bar ANY ANY ANY /_profiler/search_bar
_profiler_purge ANY ANY ANY /_profiler/purge
_profiler_info ANY ANY ANY /_profiler/info/{about}
_profiler_phpinfo ANY ANY ANY /_profiler/phpinfo
_profiler_search_results ANY ANY ANY /_profiler/{token}/search/results
_profiler ANY ANY ANY /_profiler/{token}
_profiler_router ANY ANY ANY /_profiler/{token}/router
_profiler_exception ANY ANY ANY /_profiler/{token}/exception
_profiler_exception_css ANY ANY ANY /_profiler/{token}/exception.css
_configurator_home ANY ANY ANY /_configurator/
_configurator_step ANY ANY ANY /_configurator/step/{index}
_configurator_final ANY ANY ANY /_configurator/final
_twig_error_test ANY ANY ANY /_error/{code}.{_format}
homepage ANY ANY ANY /app/example
morning ANY ANY ANY /good_morning
左のNameの列をみてください。Nameが_で始まる行は、開発環境のときのみ存在するデバグ用のルーティングです。
一方、homepage
とmorning
はDefaultController
の中で定義されているアクションメソッドです。
Path
と書いてある列がURLを表します。
実際にこのどれかにブラウザでアクセスしてみると画面が現れます。例えば、 http://localhost:8000/_profiler/phpinfo
にアクセスするとphpinfo()の画面が表示されます。
他のPathも実際にアクセスしていろいろ見てみるとよいでしょう。