Je manipule donc le framework Yii et, dans l'une des vues, en particulier le formulaire de création, j'essaie de donner une valeur par défaut à l'un de mes champs de texte. Par conséquent, lorsque je vais sur ma page de création, les valeurs sont déjà préchargées 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>
Lorsque j'appuie sur create, Yii me donne une erreur en me disant que textField
est vide? Pas sûr de ce que je peux faire d'autre que de définir la valeur. Suis-je également censé définir les attributs du modèle?
avant que la description du champ ajoute ceci:
<?php
$model->teamlead='my default value';
?>
Cela fonctionne de mon côté:
<?= $form->field($model, 'some_field')->textInput(['readonly' => true, 'value' => 'Your Value']) ?>
C'est toujours une bonne idée de traiter les données (valeurs par défaut, modifications après un événement, traitement des données, etc.) de la classe de modèle.
Si vous obtenez la valeur après l'initialisation du modèle, le meilleur moyen consiste à utiliser la méthode init ().
Toutefois, si vous souhaitez modifier ou définir une valeur par défaut après le chargement 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 contient de nombreuses informations utiles sur ces méthodes: http://www.yiiframework.com/doc/guide/1.1/en/database.ar#customization
Voici mon code que j'envoie une valeur fixe dans la base de données et affiche cette valeur en lecture seule.
<?php echo $form->textField($model,'pp_status', array('value'=>'Open', 'readonly' => 'true')); ?>
Veuillez utiliser array('readonly' => true)
au lieu de disabled
.
Je pense que la méthode MVC consiste à placer votre valeur par défaut dans votre modèle:
class MyModel extends \yii\db\ActiveRecord
{
public $teamlead = 'my default value';
....
}
Ou dans votre contrôleur:
class MyModelController extends Controller
{
public function actionCreate()
{
$model = new MyModel ();
$model->teamlead = 'my default value';
...
}
}