base.html.twig中的自定义变量

Jer*_*emy 2 php symfony twig

我想知道如何在symphony应用程序中使用base.html.twig中的自定义变量.

我知道我可以使用{{app.whatever}}但如果我愿意,我将如何使用{{myvariable}}或{{myentity.row}}?

谢谢

cha*_*asr 6

当使用twig模板呈现变量时,您可以在父模板和子模板中使用此变量.

换句话说,如果您有以下基本模板:

// base.html.twig
<html>
    <body>
       {{ block body }} 
       {{ endblock }}
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

以下子模板:

// child.html.twig
{% extends 'base.html.twig' %}
{% block body %}
    // content
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

以下控制器动作:

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

您可以使用{{ hello }}两个base.html.twigchild.html.twig.

编辑

对于全局变量:

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

twig:
    # ...
    globals:
        your_custom_var: "your_value"
Run Code Online (Sandbox Code Playgroud)

您无法定义始终分配给特定模板的变量,该变量必须动态呈现.

注意您可以动态定义全局变量,如下所示:

$this->get('twig')->addGlobal('entity', $entity);
Run Code Online (Sandbox Code Playgroud)

因此,您可以kernel.response使用EventListener轻松地注入相同的变量.

查看模板中的全局变量.