J'utilise le code suivant pour prétraiter les variables de mon modèle:
function template_preprocess_imagegallery_format(&$vars) {
template_preprocess_image_formatter($vars);
$vars['image']['#theme'] = 'igimage';
$vars['image']['#thumbnail'] = ImageStyle::load('thumbnail')->buildUrl($vars ['image']['#uri']);
$vars['image']['#fullimage'] = file_create_url($vars ['image']['#uri']);
}
La variable #uri est déjà présente, et si je la modifie, tout fonctionne bien. Mais je dois ajouter des variables supplémentaires ici car j'ai besoin de deux styles différents de la même image. Mais simplement ajouter ces variables au tableau ne fonctionne pas.
Si je vide les variables disponibles dans mon modèle Twig avec {{ dump(_context|keys) }}
, je ne vois pas les variables que j'ai ajoutées là-bas. Si j'essaie de les utiliser dans mon modèle, rien n'est inséré.
Je peux voir que les valeurs sont ajoutées au tableau, lorsque je vide la variable d'image dans le thème qui rend le champ entier, je vois mes variables dans le tableau. Mais ils ne sont toujours pas disponibles dans le modèle qui rend la variable d'image elle-même.
Que dois-je faire d'autre pour ajouter une variable dans ma fonction de prétraitement que je peux utiliser dans mon modèle Twig?
$vars
et vos clés (par exemple['image']
). Je suis presque sûr que ce n'est pas permis.template_preprocess_imagegallery_format
mais le «modèle» devrait être remplacé par le nom de votre thème ou module. Vous aurez également besoin d'un cache vide.Réponses:
J'ai finalement résolu le problème, il s'avère que le problème était que j'ai essayé d'ajouter les variables dans le mauvais préprocesseur. La modification du #theme fonctionne là-bas, mais pour ajouter des variables, j'avais besoin de prétraiter le thème que j'ai défini ici:
la source
Nom du thème: atvdirect
utilisez {{logopath}} dans page.html.twig
la source