2016-04-05 4 views
0

Im включая link.twig в block.twig и block.twig в page.twig. в моих настройках есть способ, которым я могу изменить имя объекта ссылки на что-то вроде heroLink?Установить объект с Twig в шаблон, импортированный через другой шаблон?

Мне нужно установить параметры внутри page.twig. link.twig включен в другие шаблоны, поэтому я не хочу его изменять (например, изменение link.url на heroLink.url).

В моей странице:

{% set options = { 
    title: 'my title', 
    link: { 
     text: 'Search', 
     url: "www.google.com" 
    } 
} 
%} 
{% include "block.twig" with options %} 

В block.twig:

<div class="something"> 
    <h2>{{ title }}</h2> 
    <div class="hero"> 
    {% include "link.twig" with {'style': 'primary'} %} 
    </div> 
</div> 

В link.twig:

<a href="{{ link.url }}" class="link-class-{ style }}">{{ link.text }}</a> 

Причина этого заключается в том, что на самом деле имеет block.twig другие ссылки. link.twig может быть импортировано несколько раз. Поскольку макет-объект должен быть создан в page.twig, то в этом контексте что-то вроде heroLink имеет гораздо больше смысла.

+1

'{% включают в себя "link.twig" с { 'стиль ':' primary ',' heroLink ': link,}%} '? – DarkBee

ответ

0

В моей странице:

{% set options = { 
     action: { 
     text: 'Action', 
     url: "action.com" 
     } 
    } 
    %} 
    {% include "component.twig" with options %} 

В component.twig:

{% import "link.twig" as mainLink %} 

{{ mainLink.link(action.url, action.text) }} 

В link.twig

{% macro link(url, text) %} 
     <a href="{{ url }}">{{ text }}</a> 
    {% endmacro %} 
Смежные вопросы