सवाल Symfony2 - Twig - मैं पैरेंट टेम्पलेट में पैरामीटर कैसे भेज सकता हूं?


मैं Twig templating के साथ Symfony2 का उपयोग कर एक PHP प्रोजेक्ट पर काम कर रहा हूं, और मुझे इस समस्या का हल नहीं मिल रहा है।

मेरे पास एक व्यवस्थापक बंडल है और सभी टेम्पलेट्स व्यवस्थापक आधार से विस्तारित हैं जिनमें मेनू के साथ एक मास्टर टेम्पलेट है।

जब उपयोगकर्ता उस पृष्ठ पर होता है तो मुझे पृष्ठ के मूल टेम्पलेट में मेनू का वर्तमान टैब सेट करने की आवश्यकता होती है।

आधार टेम्पलेट के माध्यम से पैरामीटर पास करने का कोई तरीका है फैली?


42
2018-06-21 20:54


मूल




जवाब:


ये रहा एक सरल उदाहरण:

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' %}

पेज 2.html.twig प्रतिपादन से आउटपुट:

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

72
2018-06-21 21:51



महान! आपका बहुत बहुत धन्यवाद! - Germán Lena
@ जर्मनलेना आपका बहुत स्वागत है :) - Paulpro
बस एक नोट (जैसा कि मैंने स्वयं पर ठोकर खाई है) यदि आप अपने आधार के भीतर चर सेट करते हैं, तो विरासत टेम्पलेट इसे ओवरराइट करने में सक्षम नहीं होंगे। - carbontwelve
@carbontwelve मैंने देखा कि, भी ... मुझे आश्चर्य है कि बेस टेम्पलेट में एक चर सेट करने का कोई तरीका है और फिर इसे बच्चे टेम्पलेट में ओवरराइड करें? - Aaron Wallentine


एक बेहतर तरीका जिसे मैंने अभी खोजा है शॉर्टकट मार्ग नाम के लिए मार्ग की जांच करके मूल दृष्टिकोण है:

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

या किसी अन्य तरीके से समूह के अनुसार आपके सभी रूट शॉर्टकट नामों का नाम देना है। उदाहरण के लिए आपके उत्पाद नियंत्रक के सभी मार्ग "उत्पाद _...." से शुरू होते हैं और फिर टेम्पलेट में आप यह कर सकते हैं:

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

2
2017-08-04 13:29