twig
Förlängning kvist
Sök…
Anmärkningar
Twig har redan några inbyggda filter och funktioner , men vad händer om de inbyggda funktionerna saknas eller om du måste få åtkomst till några standard PHP funktioner i en mall
Lägga till anpassade filter / funktioner
Här är några exempel på hur du lägger till nya filter / funktioner i twig ,
synaxen för att lägga till Twig_Function s är desamma som Twig_Filter , bara ändra nyckelorden i enlighet därmed
<?php
$twig = new Twig_Environment($loader);
/* You can chain a global function */
$twig->addFilter(new Twig_SimpleFilter('floor', 'floor'));
/* You can specify a custom function */
$twig->addFilter(new Twig_SimpleFilter('money', function($value, $currency, $prefix = false, $decimals = 2, $dec_point = "." , $thousands_sep = ",") {
$value = number_format($value, $decimals, $dec_point, $thousands_sep);
if ($prefix) return $currency.' '.$value;
return $value.' '.$prefix;
});
/* You can chain an object's method */
$twig->addFilter(new Twig_SimpleFilter('foo_bar', array($foo, 'bar')));
Skapa en Twig_Extension
Du kan gruppera alla dina anpassade funktioner / filter / test / ... i en anpassad Twig_Extension klass:
ProjectTwigExtension
class ProjectTwigExtension extends Twig_Extension {
public function getFunctions() {
return array(
new Twig_SimpleFunction('twig_function_name', array($this, 'getTwigFunctionName')),
new Twig_SimpleFunction('twig_function_foo', array($this, 'getTwigFunctionFoo')),
);
}
public function getFilters() {
return array(
new Twig_SimpleFilter('twig_filter_name' , array($this, 'getTwigFilterName')),
new Twig_SimpleFilter('twig_filter_foo' , array($this, 'getTwigFilterFoo')),
);
}
public function getName() {
return 'ProjectTwigExtension';
}
}
Registrera tillägg i kvist
$twig = new Twig_Environment($loader);
$twig->addExtension(new ProjectTwigExtension());
Fler alternativ finns på de officiella dokumenten
Enkelt födelsedatum till åldersfilter
Hur ...
1 - använd kvistförlängningsklass som sträcker sig
use \Twig_Extension
class dobToAge extends \Twig_Extension {
2 - Lägg till lämpligt filter genom att åsidosätta metoden getFilters ()
public function getFilters() {
return array(
'age' => new \Twig_Filter_Method($this, 'getAge'),
);
}
3 - Lägg till en del logik för att få en ålder på ett visst födelsedatum
public function getAge($date)
{
if (!$date instanceof \DateTime) {
// turn $date into a valid \DateTime object or let return
return null;
}
$referenceDate = date('01-01-Y');
$referenceDateTimeObject = new \DateTime($referenceDate);
$diff = $referenceDateTimeObject->diff($date);
return $diff->y;
}
}
Ring sedan ditt filter på följande sätt,
{{ yourDateOfBirthInstance | age }}