2016-03-15 2 views
1

Мне интересно, как я буду использовать пользовательские переменные в файле base.html.twig в симфоническом приложении.Пользовательские переменные в base.html.twig

Я знаю, что могу использовать {{app.whatever}}, но как бы использовать {{myvariable}} или {{myentity.row}}, если захочу?

Благодаря

+0

Вы можете использовать любую переменную, пока она существует в представлении, если вам нужно сделать это в файле base.html.twig, просто нужно передать эту переменную во всех действиях, которые используют шаблон, расширяющий этот base.html.twig. – abdiel

ответ

4

Как переменная отображается с шаблоном веточку, вы можете использовать эту переменную в обоих родительских и дочерних шаблонов.

Другими словами, если у вас есть следующий базовый шаблон:

// base.html.twig 
<html> 
    <body> 
      {{ block body }} 
     {{ endblock }} 
    </body> 
</html> 

Следующий шаблон ребенок:

// child.html.twig 
{% extends 'base.html.twig' %} 
{% block body %} 
    // content 
{% endblock %} 

И следующие действия контроллера:

public function renderVariableAction() 
{ 
    return $this->render('child.html.twig', [ 
     'hello' => 'Hello world', 
    ]); 
} 

Вы можете используйте {{ hello }} как в base.html.twig, так и в child.html.twig.

EDIT

Для глобальной переменной:

// app/config/config.yml 
# ... 

twig: 
    # ... 
    globals: 
     your_custom_var: "your_value" 

Вы не можете определить переменную, которая всегда присвоенное определенному шаблону, переменная должна быть оказаны с ним динамически.

Примечание Вы можете определить глобальные переменные динамически, как это:

$this->get('twig')->addGlobal('entity', $entity); 

Таким образом, вы можете легко придать ту же переменную на kernel.response с помощью EventListener.

См. global variables in templates.

+0

Это действительно не решает, что я хочу делать. Мне нужно передать его каждый раз, когда вызывается base.html.twig. Есть ли настройка конфигурации, где я могу сказать, что она использует эту переменную? – Jeremy

+0

Пожалуйста, взгляните на мое редактирование – chalasr

+0

Thats great, можно ли передать сущность таким образом? – Jeremy

Смежные вопросы