【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="">