Symfony2のアプリ開発3

間があきましたがSymfonyでのアプリ開発id:amidaike:20121206の続きです。
公式ページhttp://docs.symfony.gr.jp/symfony2/を見れば分かる人は、
別に見る必要のない事を書いていますよノシ

前回どこまで書いたかというと、バンドル実行後に作成される各ディレクトリの簡単な説明でしたね。


今回はコントローラについて書きましょう。
コントローラとは何ぞやというと、簡単に言うとHTTPリクエストがあった時にリクエストを受け取り、ごにょごにょしてレスポンスを返す役目を果たす物です。
はい、これだけじゃ良く分からないですね。
思いっきり簡単な図で書くと、、

こんな感じですね。


じゃあ、このコントローラをどのように実装するかというと、
バンドル作成時に一緒に作成されたコントローラを見てみると、

<?php

namespace App\SampleBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class DefaultController extends Controller
{
    public function indexAction($name)
    {
        return $this->render('AppSampleBundle:Default:index.html.twig', array('name' => $name));
    }
}

こんな感じで作成されています。

このコントローラは、
http://localhost:8001/hello
とするとindexActionが呼び出されます。(厳密に言うとhello/xxxxとxxxxの部分が必要だけど)

じゃあ、このhelloというURLでなぜDefaultControlloerが呼び出されるかというと、
フレームワーク側であんじょうよろしゅうやってくれとります。

というのは嘘で、
/Symfony/src/App/SampleBundle/Resources/config/routing.yml
のファイルを開くと、

app_sample_homepage:
    pattern:  /hello/{name}
    defaults: { _controller: AppSampleBundle:Default:index }

と設定ファイルに書き込まれています。

このrouting.ymlに上記の内容を書き込むだけでURLとコントローラを
フレームワーク側が処理してくれて、indexActionが呼び出されます。


じゅあこのrouting.ymlは何ですかね。
Symfony2ではURLとコントローラをマッチングするためにルーティングと呼ばれる方法で処理しています。

そのルーティングを記述するためにrouting.ymlを使うのです。

はい、ここまで書いたけど全然分かりやすい説明がまだ出来ていませんね。
お恥ずかしい。
次回はこの部分を突っ込んで説明しますと同時に、設定ファイル類を簡単に説明します。