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