SilexでTwigを使う

2016.12.6 (火)

Twigのインストール

Silexのfatにはすでに入っているのですが、ない場合はインストールします。composer.jsonに追加してupdateです。

{
    "require": {
        "silex/silex": "1.0.*@dev",
        "twig/twig": ">=1.8,<2.0-dev"
    }
}

サービスプロバイダーを登録する

Doctrinと同様、ライブラリーの登録みたいなことをします。Twigのテンプレートを格納するパスを指定します。以下の場合だとapp/viewsに作成します。

// Twig
$app->register(new TwigServiceProvider(), [
    'twig.path' => __DIR__ . '/../views',
]);

ルーティング

どのパスにアクセスがあったら何をするかみたいなことを書きます。

$app->get('/hello/{name}', function($name) use($app) {
    return $app['twig']->render('hello.twig', array(
        'name' => $name,
    ));
});

この場合は/hello/にアクセスがあるとhello.twigを表示するという感じになります。/hello/の後には適当な文字列を付けるとそれを受けてTwigで表示させることができます。
コントローラを使わない場合はここまででOKですが、普通に開発するとコントローラを使うのでその方法はまた今度。
テンプレート自体は以下のような記述。

<!--app/views/hello.twig-->
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Silex</title>
    </head>
    <body>
        <h1>Hello, {{name}}!</h1>
    </body>
</html>

これで一応使えるようになっている筈です。


http://www.matthewdawkins.co.uk/2015/05/controller-routes-in-silex/
http://stackoverflow.com/questions/31165803/silex-app-controller-indexcontroller-not-found-on-server
http://silex-users-jp.phper.jp/doc/html/providers/twig.html
http://qiita.com/makoto_kw/items/1122196aace7a79dcd59
http://php-archive.net/php/silex-twig/