2013-02-06 53 views
17

सबसे पहले, मुझे कोड मैं उपयोग करने का प्रयास कर रहा हूँ के साथ शुरू करते हैं:मैं एक TWIG लेआउट ब्लॉक को सशर्त रूप से ओवरराइड कैसे कर सकता हूं?

{% if modal == true %} 
    {% block header %}{% endblock %} 
    {% block footer %}{% endblock %} 
{% endif %} 

मेरा लक्ष्य क्या है कोशिश कर रहा हूँ मेरी शीर्ष लेख और पाद ब्लॉक नहीं दिखा करने के लिए ही करता है, तो चर मॉडल कहा जाता है सत्य है। मैं भी अगर बयान नीचे इस राशि:

{% block content %} 
    {{ dump(modal) }} 
{% endblock %} 

यहाँ क्या होता है कि शीर्ष लेख और पाद ब्लॉक खाली करने के लिए मेरे ओवरराइड हमेशा अगर मोडल का मूल्य सही है या नहीं तो है की परवाह किए बिना चलाता है। इसलिए, मैं इसे मोडल के साथ गलत के रूप में पारित करता हूं और नतीजा यह है कि हेडर और पाद लेख अभी भी नहीं दिखते हैं। डंप कमांड का आउटपुट सही या गलत दिखाता है, लेकिन स्थिति हमेशा कथन में सत्य का मूल्यांकन करने लगती है।

क्या सशर्त बयान में लपेटा नहीं जा सकता है, या क्या यह काम करने के लिए मुझे कुछ अतिरिक्त करने की ज़रूरत है?

आपकी सहायता के लिए धन्यवाद।

उत्तर

21

ब्लाकों यह आसपास किसी भी तर्क के बारे में परवाह नहीं है, के रूप में the documentation में कहा:

एक ब्लॉक एक तरीका प्रदान करता बदलने के लिए कैसे एक टेम्पलेट के एक खास हिस्से प्रदान की गई है, लेकिन यह किसी भी तरह से हस्तक्षेप नहीं करता है इसके चारों ओर तर्क के साथ।

आपको उस तर्क को ब्लॉक के अंदर रखना चाहिए, न कि बाहरी लेख पर, जैसा कि आप उस आलेख में अंतिम उदाहरण देख सकते हैं।

+0

धन्यवाद। मैं सिर्फ एक सहकर्मी से बात कर रहा था जिसने एक ही बात का सुझाव दिया था। उन्होंने कहा कि अगर मोडल सत्य नहीं है तो पैरेंट ब्लॉक को प्रस्तुत करने का प्रयास करें। – slave2zeros

42

माता पिता टहनी टेम्पलेट में

{% block footer %}Some standard content{% endblock %} 

को परिभाषित करें। फिर जहां अगर पाद लेख का प्रदर्शन सामग्री आप कर सकते हैं तय करना चाहते हैं टेम्पलेट में: अगर मोडल सच है

{% block footer %} 
    {% if not modal == true %} 
    {{ parent() }} 
    {% endif %} 
{% endblock %} 

- पाद लेख खाली है, हो जाएगा नहीं तो - पाद लेख में प्रिंट किया जाएगा "कुछ मानक सामग्री"

+5

जबकि स्वीकृत उत्तर सही है, यह उत्तर उस दृष्टिकोण को लेता है और दिखाता है कि वास्तव में उस समाधान को कैसे कार्यान्वित किया जाए। {{Parent()}} –

+0

के लिए +1 यह सबसे अच्छा जवाब है क्योंकि यह डिफ़ॉल्ट पर वापस आता है – numediaweb