twig
Zweig erweitern
Suche…
Bemerkungen
Twig hat bereits einige integrierte Filter und Funktionen , aber was ist, wenn die integrierten Funktionen fehlen oder Sie auf einige Standard- PHP
Funktionen in einer Vorlage zugreifen müssen
Benutzerdefinierte Filter / Funktionen hinzufügen
Hier einige Beispiele zum Hinzufügen neuer Filter / Funktionen zu twig
,
Die Synax für das Hinzufügen von Twig_Function
s ist die gleiche wie bei Twig_Filter
<?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')));
Twig_Extension erstellen
Sie können alle Ihre benutzerdefinierten Funktionen / Filter / Tests / ... in einer benutzerdefinierten Twig_Extension
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';
}
}
Erweiterung in Zweig registrieren
$twig = new Twig_Environment($loader);
$twig->addExtension(new ProjectTwigExtension());
Weitere Optionen finden Sie in den offiziellen Dokumenten
Filter für einfaches Geburtsdatum nach Alter
Wie man ...
1 - Verwenden Sie die Erweiterungsklasse twig, die erweitert wird
use \Twig_Extension
class dobToAge extends \Twig_Extension {
2 - Fügen Sie den entsprechenden Filter hinzu, indem Sie die getFilters () -Methode überschreiben
public function getFilters() {
return array(
'age' => new \Twig_Filter_Method($this, 'getAge'),
);
}
3 - Fügen Sie eine Logik hinzu, um das Alter eines bestimmten Geburtsdatums zu ermitteln
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;
}
}
Dann rufen Sie Ihren Filter wie folgt auf:
{{ yourDateOfBirthInstance | age }}