我可以在控制器中设置一个参数,该参数可以在树枝中访问以确定用户是否在管理区域中或不显示其他菜单。
所以也许我有一个管理员控制器,并且在承包商内部我将一个bool参数设置为true作为管理员:
$this->isAdminArea = true;
然后在模板中我需要一个if:
{% if isAdminArea %}
{% endif %}
其他控制器将设置$ this-> isAdminArea = false或以某种方式将其默认设置为false。
我该如何实现?
答案 0 :(得分:3)
您可以按照Symfony documentation中所述在配置中定义全局树枝变量:
# config/packages/twig.yaml
twig:
# ...
globals:
isAdminArea: false
然后在需要true
时在您的控制器中覆盖它。
在您的特定情况下,也可以使用default或defined Twig过滤器来设置默认值
{% if isAdminArea|default(false) %}
{% endif %}
{% if isAdminArea is defined %}
{% endif %}
在后一种情况下,将其设置到管理控制器中的值无关紧要,即使false
也会起作用,这可能是违反直觉的。
使用过滤器的优点是将所有相关位保留在同一位置,因此,除非您在多个模板中进行相同的检查,否则应将其视为更具可读性/可维护性的解决方案。