我正在为 Yii2 ActiveForm 复选框控件的“选中”状态寻找一个简单的解决方案,但我找不到如何设置它的解决方案。我在文档中找不到任何示例。
我试图操纵渲染代码
<?= $form->field($model, 'name')->checkbox()->label('Hi'); ?>
但似乎我需要修改 ActiveForm 本身。如何使复选框默认选中?
我正在为 Yii2 ActiveForm 复选框控件的“选中”状态寻找一个简单的解决方案,但我找不到如何设置它的解决方案。我在文档中找不到任何示例。
我试图操纵渲染代码
<?= $form->field($model, 'name')->checkbox()->label('Hi'); ?>
但似乎我需要修改 ActiveForm 本身。如何使复选框默认选中?
好的,我已经调试了一段时间并找到了解决方案,它位于 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'); ?>
我会说对于这种微不足道的功能来说过于复杂了。
看,在我的代码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'); ?>
如果我想在创建时选中复选框,我会在视图中执行以下操作:
if ($model->isNewRecord) {
$model->status = TRUE;
}
我知道这不是一个优雅的解决方案,但它正在工作。