Yii $form->textfield, comment définir une valeur par défaut?

alors je joue avec le cadre Yii et dans une des vues, en particulier la forme create, j'essaye de donner à un de mes champs de texte une valeur par défaut. Donc quand je vais sur ma page créer les valeurs sont déjà préchargés sur le formulaire.

Voici mon code actuel

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

quand j'appuie sur create, Yii me donne une erreur me disant qu'il y a textField est-il vide? Pas sûr de ce que je peux faire d'autre que de définir la valeur. Suis-je suppose que pour définir les attributs de modèle?

18
yii
demandé sur rob006 2012-08-23 20:26:55

7 réponses

avant le champ description ajouter ceci:

<?php
$model->teamlead='my default value';
?>
18
répondu zuups 2012-08-23 16:35:34

Il fonctionne sur ma fin:

<?= $form->field($model, 'some_field')->textInput(['readonly' => true, 'value' => 'Your Value']) ?>
16
répondu Imtiaz 2015-06-01 14:07:44

Toujours, c'est une bonne idée de traiter les données (défaut de valeurs, de modifier de quelque chose qui se passe, traitement de données, etc...) sur le modèle de la classe.

si vous obtenez la valeur d'après initialiser le modèle, la meilleure façon est d'utiliser la méthode init().

mais, si vous voulez changer, ou définir une valeur par défaut après charger des données de la base de données, vous pouvez utiliser la méthode afterFind ()

Par exemple:

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

Ce lien a beaucoup de informations utiles sur ces méthodes:http://www.yiiframework.com/doc/guide/1.1/en/database.ar#customization

5
répondu Eduardo Moratto 2013-04-26 04:46:34

Voici mon code que j'envoie valeur fixe dans la base de données et montrer cette valeur en lecture seule.

<?php echo $form->textField($model,'pp_status', array('value'=>'Open', 'readonly' => 'true')); ?>
4
répondu Selim Reza 2013-12-19 12:00:02

s'il vous Plaît utiliser array('readonly' => true) au lieu de disabled.

4
répondu user2605615 2017-01-09 08:03:55

je crois que la façon MVC de faire ceci est de placer votre valeur par défaut soit dans votre Model:

class MyModel extends \yii\db\ActiveRecord
{
    public $teamlead = 'my default value';
    ....
}
class MyModelController extends Controller
{
    public function actionCreate()
    {
        $model = new MyModel ();
        $model->teamlead = 'my default value';
        ...
    }
}
1
répondu Glicious 2018-04-07 08:52:59
<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') dans votre code, il travaillera

-1
répondu user6289145 2016-05-04 07:17:30