web-dev-qa-db-ja.com

Yii $ form-> textfield、デフォルト値の設定方法?

だから私は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が空であることを知らせるエラーを表示しますか?値を設定する以外に他に何ができるかわかりません。モデル属性を設定しますか?

19
user1436497

フィールドの説明の前にこれを追加してください:

<?php
$model->teamlead='my default value';
?>
19
zuups

それは私の終わりに機能します:

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

これは、固定値をデータベースに送信し、その値を読み取り専用で表示するコードです。

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

常に、モデルクラスのデータ(既定値、何かが起こった後の変更、データ処理など)を扱うのは良い考えです。

モデルの初期化後に値を取得する場合、最良の方法は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

5
Eduardo M

disabledの代わりにarray('readonly' => true)を使用してください。

5
user2605615

これを行う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';
        ...
    }
}
1
Glicious