Symfony 4 如何设置在树枝中使用的全局参数
Symfony 4 how to set a global parameter for use in twig
我能够从我的控制器设置一个参数,可以在 twig 中访问该参数以确定用户是否在管理区域或不显示额外的菜单。
所以也许我有一个管理员控制器,在承包商内部我将 bool 参数设置为 true 作为管理员:
$this->isAdminArea = true;
然后在模板中我需要一个 if:
{% if isAdminArea %}
{% endif %}
其他控制器要么设置 $this->isAdminArea =false,要么以某种方式将其默认设置为 false。
我怎样才能做到这一点?
您可以按照 Symfony documentation:
中所述在配置中定义一个全局 twig 变量
# config/packages/twig.yaml
twig:
# ...
globals:
isAdminArea: false
然后在需要时在您的控制器中覆盖它 true
。
在您的特定情况下,也可以使用 default or defined Twig 过滤器
直接设置默认值
{% if isAdminArea|default(false) %}
{% endif %}
{% if isAdminArea is defined %}
{% endif %}
在后一种情况下,将其设置到管理控制器中的值并不重要,甚至 false
也可以完成这项工作,这可能有悖常理。
使用过滤器的优点是可以将所有相关位保留在同一个位置,因此除非您在多个模板中进行相同的检查,否则应该考虑更多 readable/maintainable 解决方案。
我能够从我的控制器设置一个参数,可以在 twig 中访问该参数以确定用户是否在管理区域或不显示额外的菜单。
所以也许我有一个管理员控制器,在承包商内部我将 bool 参数设置为 true 作为管理员:
$this->isAdminArea = true;
然后在模板中我需要一个 if:
{% if isAdminArea %}
{% endif %}
其他控制器要么设置 $this->isAdminArea =false,要么以某种方式将其默认设置为 false。
我怎样才能做到这一点?
您可以按照 Symfony documentation:
中所述在配置中定义一个全局 twig 变量# config/packages/twig.yaml
twig:
# ...
globals:
isAdminArea: false
然后在需要时在您的控制器中覆盖它 true
。
在您的特定情况下,也可以使用 default or defined Twig 过滤器
直接设置默认值{% if isAdminArea|default(false) %}
{% endif %}
{% if isAdminArea is defined %}
{% endif %}
在后一种情况下,将其设置到管理控制器中的值并不重要,甚至 false
也可以完成这项工作,这可能有悖常理。
使用过滤器的优点是可以将所有相关位保留在同一个位置,因此除非您在多个模板中进行相同的检查,否则应该考虑更多 readable/maintainable 解决方案。