22

所以我在摆弄 Yii 框架,在其中一个视图中,特别是创建表单,我试图给我的一个文本字段一个默认值。因此,当我进入我的创建页面时,值已经预加载在表单上。

这是我当前的代码

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

当我按创建时,Yii 给我一个错误,告诉我textField有空?不知道除了设置值我还能做什么。我是否也想设置模型属性?

4

7 回答 7

23

它适用于我:

<?= $form->field($model, 'some_field')->textInput(['readonly' => true, 'value' => $model->isNewRecord ? 'Your Value' : $model->some_field]) ?>
于 2015-06-01T14:07:44.293 回答
20

在字段描述之前添加:

<?php
$model->teamlead='my default value';
?>
于 2012-08-23T16:35:34.987 回答
7

这是我将固定值发送到数据库并以只读方式显示该值的代码。

<?php echo $form->textField($model,'pp_status', array('value'=>'Open', 'readonly' => 'true')); ?>
于 2013-12-19T12:00:02.953 回答
5

总是,在模型类上处理数据(默认值、发生某些事情后的更改、数据处理等)是一个好主意。

如果您在初始化模型后获取值,最好的方法是使用方法 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

于 2013-04-26T04:46:34.227 回答
5

请使用array('readonly' => true)而不是disabled.

于 2013-07-22T05:19:12.490 回答
1

我相信执行此操作的 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';
        ...
    }
}
于 2018-04-07T08:52:59.057 回答
-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')起作用

于 2016-05-04T06:14:50.117 回答