【Slim3 + Twig】独自functionを作成する

Slim3とTwigを使って構築している時に、

assets用にパスを取得する関数が欲しなり、

独自のfunctionを作成しました。

 

Twig_Extension Classを拡張したClassを作る

functionをまとめておくclassを作ります。

class My_functions  extends  \Twig_Extension{

	public function getName()
	{
		return 'My_functions';
	}

	public function getFunctions()
	{
		return [
			new \Twig_SimpleFunction('assets', array($this, 'assets')),
		];
	}

                 //自作function
	public function assets($name)
	{
		return getenv('ROOT').$name;
	}

}

Containerに追加する

先ほど作成したclassをaddExtensionで追加します。

$container = $app->getContainer();

$container['view'] = function ($container) {

    $settings = $container->get('settings');
    $view = new \Slim\Views\Twig($settings['view']['template_path'], $settings['view']['twig']);

    //作成したclassを追加する
    $view->addExtension(new My_function );

    return $view;

};

 

テンプレート内で使う

<img src="{{ assets('/img/logo-fav.png') }}" alt="">