作業ノート

様々なまとめ、雑感など

Silexを試してみた(4) - Twig

SilexのTwigServiceProviderを使ってTwigを利用する。

Twigのインストール

slim版にはTwig自体が含まれていないので、composerを使ってTwigをインストールする。

composer.jsonを

{
    "require": {
        "silex/silex": "~1.1",
        "twig/twig": ">=1.8,<2.0-dev"
    }
}

のように編集して、composer.pharを実行する。

$ ./composer.phar update

Service Providerの登録

Silex\Applicationregisterメソッドで登録する。

$app->register(new Silex\Provider\TwigServiceProvider(), array(
    'twig.path' => __DIR__.'/../views',
));

twig.pathはTwigファイルを管理するディレクトリ。

テンプレートのレンダリング

$app['twig']にService Providerが登録されており、renderメソッドで対象テンプレートを指定してテンプレートをレンダリングする。

// web/index.php
$app->get('/sample04-01', function(Application $app) {
    return $app['twig']->render('04/sample04-01.twig', array('name' => 'Silex!!'));
});

テンプレートの配置先はService Providerのパス+renderメソッドで指定したパスのところ。

<!-- views/04/sample04-01.twig -->
Hello {{name}}

テンプレートでUrlGeneratorServiceProviderを使う

composerを使ってsymfony/twig-bridgeをインストールしておくと、Twigの テンプレートでUrlGeneratorServiceProviderを利用することができる。

Twigのインストールと同様に、composer.jsonを

{
    "require": {
        "silex/silex": "~1.1",
        "twig/twig": ">=1.8,<2.0-dev",
        "symfony/twig-bridge": "~2.3"
    }
}

のように編集して、composer.pharを実行する。

$ ./composer.phar update

パッケージをインストールすると、テンプレートでpath関数とurl関数が使えるようになる。

// web/index.php
$app->get('/sample04-02', function(Application $app) {
    return $app['twig']->render('04/sample04-02.twig');
})
->bind('sample04-02');

<!-- views/04/sample04-02.twig -->
<ul>
<li>{{path('sample04-02')}}</li>
<li>{{path('sample04-02', {name: "Silex"})}}</li>
</ul>
<ul>
<li>{{url('sample04-02')}}</li>
<li>{{url('sample04-02', {name: "Silex"})}}</li>
</ul>

参考

関連