これは、 Pierrickouwが提案している具体的な例です。
の下にTwig拡張機能またはフィルターを作成し、src/Twig
たとえばそれを呼び出しますExternalLinkFilter
。クラスを次のように定義します。
<?php
namespace AppBundle\Twig;
class ExternalLinkFilter extends \Twig_Extension
{
public function getFilters()
{
return array(
new \Twig_SimpleFilter('external_link', array($this, 'externalLinkFilter')),
);
}
/* source: http://stackoverflow.com/a/2762083/3924118 */
public function externalLinkFilter($url)
{
if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
$url = "http://" . $url;
}
return $url;
}
public function getName()
{
return 'external_link_filter';
}
}
?>
ここで、このクラスをサービスconfig/services.yml
として次のように登録する必要があります。
services:
# other services
app.twig.external_link:
class: AppBundle\Twig\ExternalLinkFilter
public: false
tags:
- { name: twig.extension }
external_link
これで、Twigのデフォルトのフィルターを使用するのと同じように、呼び出されたフィルターを簡単に使用できます。
...
<a href="{{check.hostname | external_link }}"> {{check.hostname}}</a>
...