2012-06-05 16 views

उत्तर

6

अपने नियंत्रक में, आप लोड के बाद $_POST से गुण एक

$model->defaultPrinterId = $model->defaultPrinterId ? $model->defaultPrinterId : null;

यह बदलता है 0null को अन्यथा यह असंशोधित छोड़ देता है।

+1

यह एक आकर्षण की तरह काम करता है, तथापि यह मेरे लिए भद्दा एक छोटा सा लगता है। मूल रूप से प्रत्येक नियंत्रक क्रिया का उपयोग करने के लिए इस स्ट्रिंग कोड को खाली स्ट्रिंग को शून्य में बदलने के लिए आवश्यक है। ऐसा लगता है कि इस तरह मॉडल में किसी भी तरह से निर्दिष्ट किया जाना चाहिए, या अधिमानतः उस HTMLDropDown टूल पर पैरामीटर में से एक मॉडल को संकेत भेज देगा, अरे, इस खाली स्ट्रिंग को शून्य के रूप में देखें। –

+0

आप 'प्रॉम्प्ट' के बजाय 'खाली' पैरामीटर भी आज़मा सकते हैं लेकिन आईआईआरसी यह समान व्यवहार करता है। – adamors

+1

इसके अलावा, यदि आप चीजों को थोड़ा जटिल बनाना चाहते हैं, तो आप अलग-अलग परिदृश्यों (सम्मिलित/अद्यतन/आदि) के लिए कस्टम नियम और/या डिफ़ॉल्ट मान परिभाषित कर सकते हैं। अधिक जानकारी के लिए [सीमोडेल :: नियम()] (http://www.yiiframework.com/doc/api/1.1/CModel/#rules-detail) पर एक नज़र डालें। – adamors

8

यदि आप सख्ती से एमवीसी का पालन करना चाहते हैं, तो मॉडल से संबंधित मूल्यों की पुष्टि मॉडल के साथ अच्छी तरह से की जानी चाहिए।

वह कुछ इस तरह से किया जा सकता:

/** 
* @return array validation rules for model attributes. 
*/ 
public function rules() { 
    // NOTE: you should only define rules for those attributes that 
    // will receive user inputs. 
    return array(
     //rules rules rules... 
     array('defaultPrinterId', 'default', 'setOnEmpty' => true, 'value' => NULL), 
     //rest of the rules 
    ); 
}