Bonjour tout le monde,
Voila je rencontre un petit problème avec symfony 4 et plus précisement la création de fonctions personnalisées Twig. En effet, j'aimerai crée une fonction toute bête et l'utiliser, seulement je galère un peu au niveau de l'utilisation. Je vous explique....
Dans un premier temps je créer la fonction a l'aide de la commande php bin/console make:twig-extension IsActiveRoute. Et je créer ma fonction. La voici :
<?php
namespace App\Twig;
use Symfony\Component\HttpFoundation\Request;
use Twig\Extension\AbstractExtension;
use Twig\TwigFunction;
class IsActiveRouteExtension extends AbstractExtension
{
public function getFunctions(): array
{
return [
new TwigFunction('function_name', [$this, 'isActiveRoute']),
];
}
function isActiveRoute(Request $request, $route, $output = 'active')
{
if ($request->get('_route') == $route) {
return $output;
}
return false;
}
}
Ensuite d'après la documentation, je dois enregistrer la class comme une service et lui assigner le tag 'twig.extension' dans le fichier 'service.yaml'. Ok donc si j'ai bien compris je fais la chose suivante dans mon fichier service.yaml
services:
App\Twig\IsActiveRouteExtension:
tags: ['twig.extension']
Toujours d'après la documentation, je suis censé avoir terminé et être capable d'utiliser ma fonction dans une vue twig.
J'essaye donc quelque chose comme cela, quelque part dans ma vue :
{{ IsActiveRoute('home') }}
Cepandant...
J'obtiens la vilaine erreur suivante, sans trop comprendre pourquoi :
Unknown "isActiveRoute" function.
J'ai exploré un peu google sans grand succes, c'est pourquoi je vous demande votre aide a ce sujet, en espèrant que vous pourrez m'apporter quelques éléments de réponse :)
Hello
Dans ta classe IsActiveRouteExtension remplace function_name par isActiveRoute
Merci Balbert.
C'était tellement gros, que je me demande comment j'ai pu passer a coté !