twig
Verlengde tak
Zoeken…
Opmerkingen
Twig heeft al een aantal ingebouwde filters en functies , maar wat als de ingebouwde functies ontbreken of als u toegang moet hebben tot een aantal standaard PHP functies in een sjabloon
Aangepaste filters / functies toevoegen
Hier zijn enkele voorbeelden van het toevoegen van nieuwe filters / functies aan twig ,
de synax voor het toevoegen van Twig_Function s is hetzelfde als die van Twig_Filter , verander gewoon de trefwoorden dienovereenkomstig
<?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')));
Een Twig_Extension maken
U kunt al uw aangepaste functies / filters / tests / ... Twig_Extension binnen een aangepaste klasse Twig_Extension :
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';
}
}
Extensie registreren in takje
$twig = new Twig_Environment($loader);
$twig->addExtension(new ProjectTwigExtension());
Meer opties zijn te vinden in de officiële documenten
Eenvoudige geboortedatum tot leeftijd filter
Hoe ...
1 - gebruik een extensie-uitbreidingsklasse
use \Twig_Extension
class dobToAge extends \Twig_Extension {
2 - Voeg het juiste filter toe door de methode getFilters () te overschrijven
public function getFilters() {
return array(
'age' => new \Twig_Filter_Method($this, 'getAge'),
);
}
3 - Voeg wat logica toe om de leeftijd van een bepaalde geboortedatum te bepalen
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;
}
}
Roep vervolgens uw filter als volgt aan,
{{ yourDateOfBirthInstance | age }}