4

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

我试图操纵渲染代码

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

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

4

3 回答 3

2

好的,我已经调试了一段时间并找到了解决方案,它位于 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'); ?>

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

于 2015-05-06T23:46:14.373 回答
2

看,在我的代码status中是 0 或 1。

所以,对于选中的复选框,我声明<?php $model->status = 1; ?>

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

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

//Your Code

<?php $model->name = 'Java'; ?>
<?= $form->field($model, 'name')->checkbox()->label('Hi'); ?>
于 2015-12-10T10:43:53.320 回答
1

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

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

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

于 2016-03-01T20:56:46.507 回答