2014-07-11 11 views
8

में गतिशील चर नाम का उपयोग करने के मैं,Symfony2 - कैसे टहनी

placeholder1 
placeholder2 
placeholderx 

तरह टहनी में कुछ चर है उन्हें कॉल करने के लिए मैं वस्तुओं "चालान" की सरणी

{% for invoices as invoice %} 
    need to display here the placeholder followed by the invoice id number 
    {{ placeholedr1 }} 

किसी भी माध्यम से पाशन कर रहा हूँ विचार? धन्यवाद।

+0

आप प्लेसहोल्डर 1 - x कहां परिभाषित करते हैं? क्या वे वैश्विक पहुंच योग्य हैं क्या प्रत्येक चालान को अपना प्लेसहोल्डर मिल जाता है? – KhorneHoly

+0

मैं उन्हें नियंत्रक में परिभाषित कर रहा हूं और उन्हें जुड़वां टेम्पलेट में भेज रहा हूं। –

+0

क्या आप मुझे वह कोड दिखा सकते हैं जहां आप परिभाषित कर रहे हैं और उन्हें पास कर रहे हैं? तो मुझे आपकी मदद करने में सक्षम होना चाहिए :) – KhorneHoly

उत्तर

3

मुझे लगता है कि आप Twig attribute फ़ंक्शन का उपयोग कर सकते हैं।

http://twig.sensiolabs.org/doc/functions/attribute.html

+0

धन्यवाद, मैं बोता हूं लेकिन यह मेरे उदाहरण पर कैसे लागू हो सकता है? –

+0

क्या यह काम करता है? {{विशेषता (ऐप, 'प्लेसहोल्डर' ~ invoice.id)}} – watermanio

+0

नहीं, यह मुझे बताता है कि वैश्विक परिवर्तनीय प्लेसहोल्डर्स मौजूद नहीं है। –

19

मैं सिर्फ एक ही मुद्दा था - और यह पहली जवाब का उपयोग करने और बाद में कुछ अतिरिक्त शोध में पाया {{ attribute(_context, 'placeholder'~invoice.id) }} काम करना चाहिए

0

मैंने पाया (_context वैश्विक संदर्भ नाम से सभी वस्तुओं से युक्त वस्तु जा रहा है) समाधान:

attribute(_context, 'placeholder'~invoice.id) 
2

इस समस्या के लिए मेरे समाधान:

प्लेसहोल्डर (एक्स) की सरणी बनाएं। जैसा:

# Options 
$placeholders = array(
    'placeholder1' => 'A', 
    'placeholder2' => 'B', 
    'placeholder3' => 'C', 
); 

# Send to View ID invoice 
$id_placeholder = 2; 

देखने के लिए और अपने टेम्पलेट कॉल में दोनों चर भेजें:

{{ placeholders["placeholder" ~ id_placeholder ] }} 

इस प्रिंट 'बी'।

मुझे उम्मीद है कि यह आपकी मदद करेगा।

2

इसके बजाय attribute function का उपयोग कर के, आप के रूप में अच्छी नियमित ब्रैकेट अंकन के साथ _context सरणी के मूल्यों का उपयोग कर सकते हैं:

{{ _context['placeholder' ~ id] }} 

मैं व्यक्तिगत रूप से इस एक के रूप में यह अधिक संक्षिप्त है और मेरी राय स्पष्ट में प्रयोग करेंगे।

environment optionstrict_variablestrue के लिए सेट है, तो आप भी default फिल्टर का उपयोग करना चाहिए: यदि चर मौजूद नहीं है

{{ _context['placeholder' ~ id]|default }} 

{{ attribute(_context, 'placeholder' ~ id)|default }} 

नहीं तो आप एक Twig_Error_Runtime अपवाद मिल जाएगा। उदाहरण के लिए, यदि आपके पास foo और bar चर हैं, तो वेरिएबल baz (जो मौजूद नहीं है) को आउटपुट करने का प्रयास करें, आपको Key "baz" for array with keys "foo, bar" does not exist संदेश के साथ अपवाद मिलता है। default फिल्टर के साथ

{% if _context['placeholder' ~ id] is defined %} ... {% endif %} 

आप जैसे, एक डिफ़ॉल्ट मान प्रदान कर सकते हैं:

एक चर के अस्तित्व की जाँच करने के लिए एक और अधिक वर्बोज़ रास्ता defined test उपयोग करने के लिए है null या एक स्ट्रिंग:

{{ _context['placeholder' ~ id]|default(null) }} 

{{ attribute(_context, 'placeholder' ~ id)|default('Default value') }} 

आप डिफ़ॉल्ट मान छोड़ देते हैं (उदा आप |default(somevalue) के बजाय |default उपयोग करें), डिफ़ॉल्ट मान को खाली स्ट्रिंग होगा।

strict_variablesfalse डिफ़ॉल्ट रूप से है, लेकिन मैं true के लिए सेट करने के लिए जैसे के कारण आकस्मिक समस्याओं से बचने के पसंद करते हैं लिखने की त्रुटियों।

+0

इस तरह पहुंचने से यह समझ में आता है और आईएमओ अधिक पठनीय है। धन्यवाद – billynoah

संबंधित मुद्दे