如何在选中状态下设置Yii2的ActiveForm复选框?

时间:2015-05-06 21:44:50

标签: checkbox yii2 active-form

我正在为Yii2 ActiveForm复选框控件的“已检查”状态寻找一个简单的解决方案,我找不到如何设置它的解决方案。我无法在文档中找到任何示例。

我试图操纵渲染代码

<?= $form->field($model, 'name')->checkbox()->label('Hi'); ?>

但似乎我需要修改ActiveForm本身。如何在默认情况下选中复选框?

3 个答案:

答案 0 :(得分:3)

好的,我已经推迟了一段时间并找到了解决方案,它位于ActiveCheckbox()函数中第1359行的BaseHtml.php的内容中

$checked = "$value" === "{$options['value']}";

它检查模型变量的默认值:

class SomeForm extends Model
{
    public $name = true;

必须为

中的'value'选项指定相同的值(具有相同类型)
<?= $form->field($model, 'name')->checkbox(['value' => true])->label('Hi'); ?>

我会说这对于这种微不足道的功能而言过于复杂。

答案 1 :(得分:1)

请参阅我的代码status中的0或1。

因此,对于选中复选框,我声明了<?php $model->status = 1; ?>

<?php $model->status = 1; ?>
<?= $form->field($model, 'status')->checkbox()->label('Hi'); ?>

例如,如果您有两个复选框名称值,即PHP或Java。然后,将其声明为<?php $model->name = 'Java'; ?>以将Java作为checked

//Your Code

<?php $model->name = 'Java'; ?>
<?= $form->field($model, 'name')->checkbox()->label('Hi'); ?>

答案 2 :(得分:1)

如果我想在创建时选中一个复选框,我会在视图中执行以下操作:

if ($model->isNewRecord) {
    $model->status = TRUE;
}

我知道这不是一个优雅的解决方案,但它正在发挥作用。