2012-08-23 22 views
17

तो मैं yii ढांचे के साथ झुका रहा हूं और विशेष रूप से निर्माण फ़ॉर्म में से एक में, मैं अपने टेक्स्टफील्ड में से एक को डिफ़ॉल्ट मान देने की कोशिश कर रहा हूं। इसलिए जब मैं अपने निर्माण पृष्ठ पर जाता हूं तो मान पहले ही फॉर्म पर पहले से लोड हो चुके हैं।

यहाँ मेरे वर्तमान कोड

<div class="row"> 
    <?php echo $form->labelEx($model,'teamlead'); ?> 
    <?php echo $form->textField($model,'teamlead',array('size'=>50,'maxlength'=>50,'value'=>Yii::app()->user->getUsername(),'disabled'=>'disabled')); ?> 
    <?php echo $form->error($model,'teamlead'); ?> 
</div> 

जब मैं बनाने दबाते हैं, Yii मुझे मुझे बता कि वहाँ TextField खाली है त्रुटि देता है? निश्चित नहीं है कि मूल्य निर्धारित करने के अलावा मैं और क्या कर सकता हूं। क्या मैं मॉडल विशेषताओं को सेट करने का भी अनुमान लगाता हूं ??

उत्तर

16

इससे पहले कि आप क्षेत्र वर्णन इस जोड़ें:

<?php 
$model->teamlead='my default value'; 
?> 
+1

तो मैं div से पहले इस लाइन डाल काम करेंगे कोडिंग में array('readonly'=>'true')? – user1436497

+0

कभी नहीं, मैंने इसे ठीक किया, लेकिन मुझे नियंत्रक में डिफ़ॉल्ट मान सेट करना पड़ा। अधिक विशेष रूप से निर्माण समारोह में। क्या कोई तरीका है जहां मैं इसे दृश्य में सेट कर सकता हूं? – user1436497

+0

बस ऊपर दिए गए अपने दृश्य में $ मॉडल चर के लिए उस मान को सेट करें जहां फ़ील्ड बाहर रखा जा रहा है। या आप उस मान को अपने मॉडल के 'init()' फ़ंक्शन – acorncom

3

हमेशा की तरह, मॉडल वर्ग से सम्बंधित आंकड़ों पर एक अच्छा विचार सौदा (डिफ़ॉल्ट मान, परिवर्तन के बाद कुछ हो रहा है, डेटा उपचार, आदि) है।

यदि आपको मॉडल को आरंभ करने के बाद से मूल्य प्राप्त हो रहा है, तो विधि init() का उपयोग करने का सबसे अच्छा तरीका है।

लेकिन, आप बदल सकते हैं या डेटाबेस से डेटा लोड करने के बाद एक डिफ़ॉल्ट मान को परिभाषित करना चाहते हैं, तो आप उदाहरण के लिए विधि afterFind()

उपयोग कर सकते हैं:

public function afterFind(){ 
    $this->localdate = date("Y-m-d"); 
    parent::afterFind(); 
} 

इस कड़ी का एक बहुत है इन विधियों के बारे में उपयोगी जानकारी: http://www.yiiframework.com/doc/guide/1.1/en/database.ar#customization

4

disabled के बजाय array('readonly' => true) का उपयोग करें।

4

यहां मेरा कोड है कि मैं डेटाबेस में निश्चित मान भेज रहा हूं और उस मूल्य को पढ़ता हूं।

<?php echo $form->textField($model,'pp_status', array('value'=>'Open', 'readonly' => 'true')); ?> 
16

यह मेरी अंत पर काम करता है:

<?= $form->field($model, 'some_field')->textInput(['readonly' => true, 'value' => 'Your Value']) ?> 
+1

में डिफ़ॉल्ट मान के रूप में सेट कर सकते हैं, ऐसा करना एक अच्छा विचार नहीं है। फ़ील्ड में हमेशा यह मान होगा और यदि आप इस फ़ॉर्म के माध्यम से मॉडल को अपडेट करना चाहते हैं, तो आप हमेशा मॉडल के बजाय 'आपका वैल्यू' देखेंगे। –

-1
<div class="row"> 
    <?php echo $form->labelEx($model,'teamlead'); ?> 
    <?php echo $form->textField($model,'teamlead',array('readonly'=>'true',size'=>50,'maxlength'=>50,'value'=>Yii::app()->user->getUsername(),'disabled'=>'disabled')); ?> 
    <?php echo $form->error($model,'teamlead'); ?> 
</div> 

डाल अपने यह

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