Slim3 (PHP) + Twig2 にて独自のカスタムフィルターを追加する

カスタム関数

Slim + Twig で View の開発をする場合、
Twig の公式ドキュメントとちょっと異なる書き方になる。

dependencies.php

$container['view'] = function ($c) {
	$settings = $c->get('settings')['renderer'];
	$view = new Twig($settings['template_path'], [
		// 'cache' => $settings['template_cache_path'],
	]);
	$basePath = rtrim(str_ireplace('index.php', '', $c['request']->getUri()->getBasePath()), '/');
	$view->addExtension(new TwigExtension($c['router'], $basePath));

	// カスタム Filter
	$view->getEnvironment()->addFilter(new Twig_SimpleFilter('date', function ($string, $format = null) {
		if ($format) {
			return date($format, $string);
		}
		return date('Y.m.d', $string);
	}));

	return $view;
};

使い方

{# unix = 1563116400  #}
{{ unix|hello('Y-m-d') }}
2019-07-15