2008-12-08 13 views
8

मैं यह देखने के लिए कैसे जांचूं कि Smarty को कोई विशेष मान पहले ही सौंपा गया है और यदि कोई (डिफ़ॉल्ट) मान असाइन नहीं किया गया है?मैं यह देखने के लिए कैसे जांचूं कि एक Smarty चर पहले ही असाइन किया गया है या नहीं?

उत्तर:

if ($this->cismarty->get_template_vars('test') === null) { 
    $this->cismarty->assign('test', 'Default value'); 
} 

उत्तर

13

चतुर 2

if ($smarty->get_template_vars('foo') === null) 
{ 
    $smarty->assign('foo', 'some value'); 
} 

चतुर 3

if ($smarty->getTemplateVars('foo') === null) 
{ 
    $smarty->assign('foo', 'some value'); 
} 

ध्यान दें कि चतुर 3, आप वाई के लिए इसके बजाय $smarty->getTemplateVars का उपयोग करना होगा।

+0

कि अभी जांच नहीं करेगा कर सकता है यह देखने के लिए मूल्य नहीं है टी शून्य? क्या होगा अगर शून्य उचित असाइनमेंट है? –

+0

इस मामले में व्यवहार होना चाहिए, "यदि कोई मान सेट नहीं है (शून्य) तो डिफ़ॉल्ट मान सेट करें।" इसके अलावा, जारी करने() को किसी फ़ंक्शन के वापसी मूल्य की जांच करने के लिए उपयोग नहीं किया जाता है, हालांकि आप केवल मूल्य की जांच कर सकते हैं। धन्यवाद एंडी। – GloryFish

+0

get_template_vars() को गैर-मौजूद चर पर शून्य वापस करने के लिए डिज़ाइन किया गया है। – Andy

0

सुंदर यकीन है कि आप कर सकते हैं:

if (!isset($smarty['foo'])) 
{ 
    $smarty->assign('foo', 'some value'); 
} 
+0

यह Smarty 3 के साथ काम नहीं करता है। आपको त्रुटि मिलती है 'प्रकार की वस्तु का उपयोग Smarty के रूप में नहीं कर सकता' – AbcAeffchen

1

get_template_vars() अशक्त वापस आ जाएगी आप एक चर सेट नहीं किया है, तो आप

if ($smarty->get_template_vars('test') === null) { 
    echo "'test' is not assigned or is null"; 
} 

क्या कर सकते हैं अगर आप एक है फिर भी है कि जांच असफल हो जायेगी चर सौंपा लेकिन बातिल के रूप में स्थापित है, जो मामले में आप

$tmp = $smarty->get_template_vars(); 
if (!array_key_exists('test', $tmp)) { 
    echo "'test' is not assigned"; 
} 
संबंधित मुद्दे

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