2010-02-11 10 views
32

मैं सोच रहा था कि एक Smarty टेम्पलेट फ़ाइल के भीतर एक चर के लिए एक सरणी असाइन करना संभव था? मैं इसएक स्मार्ट टेम्पलेट फ़ाइल के भीतर सरणी कैसे असाइन करें?

{assign var='file' value = array('dir','doc','exe')} 

की कोशिश की है लेकिन जब मैं सरणी प्रिंट आउट यह इस का उत्पादन:

array(\'dir\',\'doc\',\'exe\') 

मैं चतुर सरणी मूल्यों से बचने कैसे रोक सकते हैं?

अग्रिम धन्यवाद

+0

मैं इस समस्या के माध्यम से भाग गया और एक समाधान पहले के साथ आया है। जिस समाधान के साथ मैं आया था वह है [यहां] (http://stackoverflow.com/questions/11336840/shorten-smarty-if-statements/11337280) – Subash

उत्तर

44
{php} 
    $this->assign("array", array('dir','doc','exe')); 
{/php} 

{foreach from=$array item=item} 
    {$item} 
{/foreach} 

चतुर v.3 से नए वाक्य रचना उपलब्ध है

{$array = ['item1','item2',$item3]} 

अधिक जानकारी के लिए देखें: http://www.smarty.net/docs/en/language.syntax.variables.tpl

+1

यदि आप {php} का उपयोग करते हैं तो smarty का उपयोग करने का अर्थ क्या है? आपको टेम्पलेट के अंदर {php} का उपयोग नहीं करना चाहिए जब तक कि यह एकमात्र विकल्प न हो। @ जेन्स्की का समाधान सही है –

+1

सुनिश्चित करें कि अंतिम तत्व के पीछे अल्पविराम (,) न डालें। मैं php से सरणी की प्रतिलिपि बना रहा था जो वाक्यविन्यास त्रुटि उत्पन्न कर रहा था। – rambii

42

मैं सिर्फ एक और उत्तर here कि अनुमति देता है पाया आप {php} tags (Smarty द्वारा अनुशंसित) के उपयोग के बिना ऐसा करने के लिए

{assign var='icon' value=','|explode:"dir,doc,exe"} 

में अभी भी और अधिक विचारों के लिए खुला है, हालांकि ...

+0

यह विधि सहयोगी सरणी – Kirzilla

+0

+1 असाइन करने की अनुमति नहीं देती है - धन्यवाद। यह वही था जो हमें हमारे हैकी थर्ड-पार्टी सीएमएस में किसी मुद्दे को हल करने के लिए आवश्यक था। –

+0

smarty के संस्करण 3 के लिए Mituha के जवाब देखें। – Andy

8
{$system=['freebsd','windows','macosx','linux']} के बारे में

क्या?

+1

यह Smarty v3 में काम करता है: http://www.smarty.net/docs/en/language.syntax.variables.tpl – Andy

-1

smarty टेम्पलेट फ़ाइल में कोड लिखने का सही तरीका नहीं है। आपको php में एक सरणी बनाना चाहिए और फिर मानों को smarty से प्राप्त करना चाहिए।

This is the right way to create a standard development code. like. 

पीएचपी:

public function arrSam(){ 
    $colors = array(0 => '#1f1f1f', 1 => '#696969', 2 => '#878787', 3 => '#b4b4b4', 4 => '#d2d2d2', 5 => '#f0f0f0', 6 => '#ffffff'); 
    $smarty->assign('colors', $colors); 
} 

चतुर:

{assign var=colors value=$smarty->arrSam()} 
{$colors|print_r} 
+2

कृपया समझाएं कि यह सही क्यों नहीं है। –

0
$smarty->assign("lat",$lat); 

{foreach $lat as $latlongval} 
    {assign var="myArray" value=","|explode:$latlongval} 
    {$myArray['0']} 
    {$myArray['1']} 
{/foreach} 
संबंधित मुद्दे