Bonjour,
J'utilise Twig, et je rens mes pages à partir de templates se trouvant dans des fichiers, j'ai donc mon loader avec: "$loader = new \Twig\Loader\FilesystemLoader('/mestemplates');". Pas de souci, ça fonctionne.
Je voudrais par contre avoir la possibilité via un formulaire d'enregistrer des templates supplémentaires en BDD, que je puisse utiliser ensuite avec Twig. Pas de souci pour le formulaire en lui-même et l'enregistrement en BDD.
Le problème arrive lorsque je veux rendre ces templates.
Je vais récupérer le template dans ma BDD, et je voudrais ensuite faire un $twig->render($monTemplate, ['mes' => $variables]);
Problème: ayant configuré Twig à la base pour aller chercher des fichiers, il ne prend le template que je lui donne ($monTemplate) comme un chemin d'accès, qu'il ne connait bien sûr pas.
J'ai vu sur la documentation de Twig qu'on peut le faire avec:
$loader = new \Twig\Loader\ArrayLoader([
'index' => 'Hello {{ name }}!',
]);
$twig = new \Twig\Environment($loader);
Mais ça m'oblige à faire un "second" Twig, d'où ma question: est-il possible à partir d'une configuration "FilesystemLoader", de rendre tout de même des templates contenus dans des variables?
D'après cette page: https://twig.symfony.com/doc/3.x/intro.html c'est soit l'un (template $variable), soit l'autre (template fichier)
EDIT> Après quelques recherches, il est question d'une méthode addLoader() dans la doc de Twig (https://twig.symfony.com/doc/3.x/api.html), mais je ne vois pas comment l'utiliser... ("You can also add loaders via the addLoader() method." sans autre explication).
Cette méthode me permettrait d'ajouter le nouveau loader ) celui d'origine et ainsi garder les variables globales que j'ai dedans par exemple ainsi que les extensions.
J'espère que mon explication est à peu près clair...
Merci!