我正在寻找一个简单的解决方案来为Yii2 ActiveForm复选框控件设置“已选”状态,但我找不到如何设置它的解决方案。文档中没有任何示例。我尝试过操纵渲染代码。
<?= $form->field($model, 'name')->checkbox()->label('Hi'); ?>
但是似乎我需要修改ActiveForm本身。如何使复选框默认选中?
<?= $form->field($model, 'name')->checkbox()->label('Hi'); ?>
但是似乎我需要修改ActiveForm本身。如何使复选框默认选中?
好的,我已经进行了一段时间的调试并找到了解决方案,它位于BaseHtml.php文件的activeCheckbox()函数中的第1359行
$checked = "$value" === "{$options['value']}";
它检查模型变量的默认值:
class SomeForm extends Model
{
public $name = true;
同时,'value'选项中必须分配相同类型的值。
<?= $form->field($model, 'name')->checkbox(['value' => true])->label('Hi'); ?>
在我的代码中,status
的值为 0 或 1。
因此,对于选中的复选框,我声明了 <?php $model->status = 1; ?>
<?php $model->status = 1; ?>
<?= $form->field($model, 'status')->checkbox()->label('Hi'); ?>
<?php $model->name = 'Java'; ?>
就可以让 Java 被 checked
。//Your Code
<?php $model->name = 'Java'; ?>
<?= $form->field($model, 'name')->checkbox()->label('Hi'); ?>
if ($model->isNewRecord) {
$model->status = TRUE;
}
我知道这不是一个优雅的解决方案,但它确实有效。