だから私はYiiフレームワークをいじっていて、ビューの1つ、具体的には作成フォームで、テキストフィールドの1つにデフォルト値を与えようとしています。したがって、作成ページに移動するとき値はすでにフォームにプリロードされています。
これが現在のコードです
<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>
Createを押すと、YiiはtextField
が空であることを知らせるエラーを表示しますか?値を設定する以外に他に何ができるかわかりません。モデル属性を設定しますか?
フィールドの説明の前にこれを追加してください:
<?php
$model->teamlead='my default value';
?>
それは私の終わりに機能します:
<?= $form->field($model, 'some_field')->textInput(['readonly' => true, 'value' => 'Your Value']) ?>
これは、固定値をデータベースに送信し、その値を読み取り専用で表示するコードです。
<?php echo $form->textField($model,'pp_status', array('value'=>'Open', 'readonly' => 'true')); ?>
常に、モデルクラスのデータ(既定値、何かが起こった後の変更、データ処理など)を扱うのは良い考えです。
モデルの初期化後に値を取得する場合、最良の方法は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
disabled
の代わりにarray('readonly' => true)
を使用してください。
これを行うMVCの方法は、モデルにデフォルト値を配置することです。
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';
...
}
}