簡體   English   中英

Symfony2 - Twig - 如何將參數發送到父模板?

[英]Symfony2 - Twig - How can I send parameters to the parent template?

我正在使用帶有Twig模板的Symfony2進行PHP項目,我無法找到解決此問題的方法。

我有一個管理包,所有模板都從管理員基礎擴展而來,管理基礎有一個帶有菜單的主模板。

當用戶在該頁面上時,我需要將頁面基本模板中菜單的當前選項卡設置為選中狀態。

有沒有辦法通過擴展將參數傳遞給基本模板?

這是一個簡單的例子:

base.html.twig

{# base.html.twig #}
...
<ul>
  <li{% if menu_selected|default('one') == 'one' %} class="selected"{% endif %}>One</li>
  <li{% if menu_selected == 'two' %} class="selected"{% endif %}>Two</li>
  <li{% if menu_selected == 'three' %} class="selected"{% endif %}>Three</li>
</ul>
...

page2.html.twig

{# page2.html.twig #}
{% extends 'YourBundle::base.html.twig' %}

{% set menu_selected = 'two' %}

渲染page2.html.twig的輸出:

<ul>
  <li>One</li>
  <li class="selected">Two</li>
  <li>Three</li>
</ul>

我剛剛發現的一種更好的方法是通過檢查快捷方式路由名稱的路由來實現基本方法:

<li class="{% if app.request.attributes.get('_route') == 'homepage' %}active{% endif %}">Home</li>

或者另一種方法是根據所屬的組名稱命名所有路由快捷方式名稱。 例如,產品控制器中的所有路徑都以“product _....”開頭,然后在模板中可以執行以下操作:

<li class="{% if app.request.attributes.get('_route') starts with 'product' %}active{% endif %}">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM