2012-08-23 14 views
17

Also fummle ich mit dem yii-Framework und in einer der Ansichten, speziell der create-Form, versuche ich, eines meiner Textfelder einen Standardwert zu geben. Wenn ich also auf meine Erstellungsseite gehe, sind die Werte bereits auf dem Formular vorgeladen.

Hier ist mein aktueller Code

<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> 

Wenn ich erstellen drücken, YII mir einen Fehler gibt mir zu sagen, dass es TextField- leer ist? Ich bin mir nicht sicher, was ich sonst noch tun kann, außer den Wert festzulegen. Soll ich auch die Modellattribute einstellen?

Antwort

16

bevor Sie Feldbeschreibung fügen Sie diese:

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

Also habe ich diese Zeile vor dem div? – user1436497

+0

Nevermind, ich habe es behoben, aber ich musste die Standardwerte im Controller einstellen. Genauer gesagt in der create-Funktion. Gibt es einen Weg, wo ich es in der Ansicht einstellen kann? – user1436497

+0

Setzen Sie einfach diesen Wert für die Variable $ model in Ihrer Ansicht oben, wo das Feld ausgegeben wird. Oder Sie können diesen Wert als Standardwert in der Funktion 'init()' Ihres Modells setzen. – acorncom

3

immer, ist eine gute Idee, handeln von Daten (defaul Werte, Veränderung nach etwas geschieht, Datenverarbeitung, usw.) auf der Modellklasse.

Wenn Sie nach der Initialisierung des Modells den Wert erhalten, verwenden Sie am besten die Methode init().

Aber, wenn Sie ändern möchten, oder einen Standardwert nach Belastungsdaten aus der Datenbank zu definieren, können Sie die Methode verwenden afterFind()

Zum Beispiel:

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

Dieser Link hat eine Menge von Nützliche Informationen zu diesen Methoden: http://www.yiiframework.com/doc/guide/1.1/en/database.ar#customization

4

Verwenden Sie bitte array('readonly' => true) anstelle von disabled.

4

Hier ist mein Code, dass ich festen Wert in die Datenbank sende und zeige diesen Wert readonly.

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

Es funktioniert auf meinem Ende:

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

Es ist keine gute Idee, das zu tun. Das Feld hat immer diesen Wert und wenn Sie das Modell über dieses Formular aktualisieren möchten, sehen Sie immer "Your Value" anstelle des Modells. –

-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> 

array('readonly'=>'true') setzen in Ihrem Codierung wird es funktionieren

Verwandte Themen