2012-01-19 15 views
14

मैं चतुर टेम्पलेट में अन्य एक आयामी सरणी से एक नई सरणी बनाने के लिए की जरूरत है। तो, टेम्पलेट फ़ाइल में सरणी बनाने के लिए सबसे अच्छी संभावनाएं क्या हैं।smarty टेम्पलेट में एक सरणी बनाएँ?

धन्यवाद, सचिन

उत्तर

23

Smarty3 {$var = ['foo' => 'bar', 'sub' => [1, 2, 3]]} और {$var.foo = 'other'}

अगर उन विकल्पों के लिए पर्याप्त नहीं है, एक plugin function लिखने के लिए आपको अनुमति देता है। एक दुष्ट और एक गंदा एक - -

+0

मैं इस सलाह की कोशिश की है और यह काम करता है। यह सुविधा Smarty दस्तावेज़ में प्रलेखित नहीं प्रतीत होती है, जो इस सलाह को मेरे लिए और भी मूल्यवान बनाती है। –

10

अतीत में, मैं दो तरीकों का इस्तेमाल किया है जल्दी से एक TPL अंदर एक सरणी आवंटित करने के लिए:

{* Am I evil? *} 
{php} 
    $array = array("cat", "dog", "rabbit"); 
    $this->assign("myArray", $array); 
{/php} 

{* Am I dirty? *} 
{assign var='myArray' value=','|explode:"cat,dog,rabbit"} 

अपने सरणी में दोनों परिणाम एक सरल निर्माण करने के लिए टेम्पलेट के अंदर उपलब्ध पाश। वैसे भी मैं हमेशा इस तरह अपना कोड बदलना समाप्त कर दिया, इसलिए मुझे इस सामान की बिल्कुल आवश्यकता नहीं थी।

+0

मुझे "इनलाइन" PHP कोड की वजह से पहला दृष्टिकोण पसंद नहीं है। दूसरा समाधान थोड़ा मुश्किल है लेकिन अभी भी किसी भी हैक के बिना वैध smarty है। वोट दिया! –

1

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

+0

और कैसे आप एक मॉडल में (पंक्तियों के साथ) एक मेज पर कार्रवाई ताकि वहाँ किसी भी HTML मार्कअप नहीं होगा करते हैं? आपको अभी भी डेटा की पूरी सरणी पास करनी है और दृश्य में गतिशील तालिका बनाना है। – Andrew

+0

@Andrew क्या मुझे अपने जवाब में कुछ याद आ रहा है? मैंने ऐसा नहीं कहा दृश्य स्थिर हो गया है, मैं केवल ने बताया कि सभी डाटा प्रोसेसिंग मॉडल में किया जाना चाहिए और देखने को प्रदर्शित करना पारित कर दिया। – Catalin

+0

कैटलिन> हाँ, मैं समझता हूं कि आपका क्या मतलब है। मैं सिर्फ यह जानना चाहता था कि टेम्पलेट में लूप को रोकने का कोई तरीका है या नहीं। और AFAIK वहाँ किसी भी ... – Andrew

5

यह वास्तव में बहुत सरल है:

{assign 'myArray' ['cat', 'dog', 'rabbit']} 
+0

क्या यह संस्करण 2 के साथ काम करता है? –

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