Twigowy filtr - kpiorun/symfony2 GitHub Wiki
Założenia:
- Każdy tekst pasujący do wzorca dowolny ciąg znaków zamieni na HTML some text
Należy Stworzyć klasę dziedziczącą po Twig_Extensions
`<?php
//src/Piorun/HomeSiteBundle/Twig/PiorunExtension.php
namespace Piorun\HomeSiteBundle\Twig;
class PiorunExtension extends \Twig_Extension {
public function getFilters() {
return array(
new \Twig_SimpleFilter('piorun', array($this, 'strongFilter')),
);
}
/*Funkcja odpowiedzialna za zamianę wybranie i zamianę ciągu znaków*/
public function strongFilter($text) {
$txt = preg_replace('/__.*?__/', '<strong>$0</strong>', $text);
$txt = str_replace('__', '', $txt);
return $txt;
}
public function getName() {
return 'piorun_extension';
}
}`
Następnie w celu aktywacji należy w pliku services.yml dopisać
`#Piorun/HomeSiteBundle/Resources/config.yml
services:
piorun.twig.piorun_extension:
class: Piorun\HomeSiteBundle\Twig\PiorunExtension
tags:
- { name: twig.extension }`
W twigu wystarczy użyć filtra w następujący sposób
`{{'dowolny tekst'|piorun|raw }}`
W wyniku czego otrzymamy
`<strong>dowolny tekst</strong>`
Uwaga: Jeżeli tekst ma więcej niż jeden ciąg znaków pasujący do wzorca wtedy wynik może wyglądać np.
{{'__dowolny __lorem ipsum__ tekst__'|piorun|raw }}
wynik:
<strong>dowolny </strong><strong>lorem ipsum</strong>tekst__