Estou usando o seguinte código para pré-processar as variáveis para o meu modelo:
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']);
}
A variável #uri já está presente e, se eu apenas modificá-la, tudo funciona bem. Mas preciso adicionar variáveis adicionais aqui, pois preciso de dois estilos diferentes da mesma imagem. Mas simplesmente adicionar essas variáveis à matriz não funciona.
Se eu despejar as variáveis disponíveis no meu modelo Twig {{ dump(_context|keys) }}
, não vejo as variáveis adicionadas lá. Se eu tentar usá-los no meu modelo, nada será inserido.
Percebo que os valores são adicionados à matriz. Quando despejo a variável de imagem no tema que renderiza todo o campo, vejo minhas variáveis na matriz. Mas eles ainda não estão disponíveis no modelo que renderiza a própria variável de imagem.
O que mais eu preciso fazer para adicionar uma variável na minha função de pré-processo que eu possa usar no meu modelo Twig?
$vars
e suas chaves (por exemplo['image']
). Tenho certeza de que isso não é permitido.template_preprocess_imagegallery_format
mas 'modelo' deve ser substituído pelo seu tema ou nome do módulo. Você também precisará de um cache limpo.Respostas:
Finalmente resolvi o problema, o problema foi que tentei adicionar as variáveis no pré-processador errado. A edição do #theme funciona lá, mas para adicionar variáveis, eu precisava pré-processar o tema definido aqui:
fonte
Nome do tema: atvdirect
use {{logopath}} em page.html.twig
fonte