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\Application
のregister
メソッドで登録する。
$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>
参考
- TwigServiceProvider - Documentation - Silex - The PHP micro-framework based on Symfony2 Components
- UrlGeneratorServiceProvider - Documentation - Silex - The PHP micro-framework based on Symfony2 Components