PHPのslim3にtwigの設定を追加

前回TOPページのコントローラの追加を行ったので、今回はテンプレートの追加をします。
テンプレートにはtwigを使用します。

composer.jsonを更新してtwigのパッケージをインストールします

$ vi composer.json
    "require": {
        "php": ">=5.5.0",
        "slim/slim": "^3.1",
        "slim/twig-view": "2.2.0",
$ php composer.phar update

rendererの設定にtwig用の項目を設けます。

$ vi src/settings.php
        // Renderer settings
        'renderer' => [
            'template_path' => __DIR__ . '/../templates/',
            'twig_settings' => [
                'cache' => __DIR__ . '/../cache',
            ],
        ],

コンテナのrendererにはphp-viewの設定がありますが、twigの設定に書き換えます。

$ vi src/dependencies.php
$container['renderer'] = function ($c) {
    $settings = $c->get('settings')['renderer'];
    $view = new \Slim\Views\Twig($settings['template_path'], $settings['twig_settings']);
    $basePath = rtrim(str_ireplace('index.php', '', $c['request']->getUri()->getBasePath()), '/');
    $view->addExtension(new \Slim\Views\TwigExtension($c['router'], $basePath));
    return $view;
};

コントローラでtwigのテンプレートを使用するように書き換えます。

    public function index($request, $response, $args){
        return $this->container['renderer']->render($response, 'top/index.twig', ['message' => '<test>']);
    }

twigテンプレートを追加します

$ vi templates/top/index.twig
{{ message }}

これでtwig用の設定の追加は完了です