Php 如何有条件地包含不同的模板?

Php 如何有条件地包含不同的模板?,php,twig,symfony4,Php,Twig,Symfony4,我有一个基础模板,我需要包括前端和后端不同的页脚。这在Symfony 4中可能吗 我需要包括以下前端页面: {% include ('core/footer-frontend.html.twig') %} 对于后端 {% include ('core/footer-backend.html.twig') %} 如何告诉基础模板要包含哪个页脚?如果您想基于uri执行此操作,您可以通过应用程序访问当前路由,然后使用以下命令将其与管理员url匹配: 您可能希望在条件中添加一个额外的保护措施,如,并

我有一个基础模板,我需要包括前端和后端不同的页脚。这在Symfony 4中可能吗

我需要包括以下前端页面:

{% include ('core/footer-frontend.html.twig') %}
对于后端

{% include ('core/footer-backend.html.twig') %}

如何告诉基础模板要包含哪个页脚?

如果您想基于uri执行此操作,您可以通过
应用程序访问当前路由,然后使用以下命令将其与管理员url匹配:


您可能希望在条件中添加一个额外的保护措施,如
,并被授予(“角色管理”)
,以确保在显示错误页面时不会发生路由泄漏。

不知道您是否询问如何在Twig中或在controller+Twig中整体执行此操作,但对于Twig,您可以简单地执行以下操作:

{% if conditionIfThisIsFrontend %}
    {% include ('core/footer-frontend.html.twig') %}
{% else %}
    {% include ('core/footer-backend.html.twig') %}
{% endif %}

显然,如果在前端上下文中呈现,则需要通过将控制器内的此变量设置为hold
true
来填写
条件,如果在后端上下文中呈现,则需要填写
条件。

另一种方法是制作基本模板,然后制作一个前端模板和一个后端模板,分别扩展基础模板。主代码可以进入base,前端/后端模板可以扩展base并包含正确的页脚。当您在后端视图上工作时,扩展后端模板,反之亦然。

您认为前端和后端是什么?是否要基于url参数、用户角色..执行此操作?在我的应用程序后端中,我调用的模板中包含In route/admin或controller from with I call模板位于src/controller/admin中,但这是一种方式,假设我在每个管理控制器中设置变量,或者我可以一次性为每个管理控制器设置?这取决于控制器代码的外观。若你们有一些基本的管理控制器,你们可以在那个里设置保存该值的变量,并在扩展该控制器的所有其他管理控制器中使用它。
{% if conditionIfThisIsFrontend %}
    {% include ('core/footer-frontend.html.twig') %}
{% else %}
    {% include ('core/footer-backend.html.twig') %}
{% endif %}