Symfony 4如何设置在树枝中使用的全局参数

时间:2019-02-14 20:52:17

标签: symfony symfony4

我可以在控制器中设置一个参数,该参数可以在树枝中访问以确定用户是否在管理区域中或不显示其他菜单。

所以也许我有一个管理员控制器,并且在承包商内部我将一个bool参数设置为true作为管理员:

$this->isAdminArea = true;

然后在模板中我需要一个if:

{% if isAdminArea %}

{% endif %}

其他控制器将设置$ this-> isAdminArea = false或以某种方式将其默认设置为false。

我该如何实现?

1 个答案:

答案 0 :(得分:3)

您可以按照Symfony documentation中所述在配置中定义全局树枝变量:

# config/packages/twig.yaml
twig:
    # ...
    globals:
        isAdminArea: false

然后在需要true时在您的控制器中覆盖它。

在您的特定情况下,也可以使用defaultdefined Twig过滤器来设置默认值

{% if isAdminArea|default(false) %}

{% endif %}
{% if isAdminArea is defined %}

{% endif %}

在后一种情况下,将其设置到管理控制器中的值无关紧要,即使false也会起作用,这可能是违反直觉的。

使用过滤器的优点是将所有相关位保留在同一位置,因此,除非您在多个模板中进行相同的检查,否则应将其视为更具可读性/可维护性的解决方案。