我正在为Yii2 ActiveForm复选框控件的“已检查”状态寻找一个简单的解决方案,我找不到如何设置它的解决方案。我无法在文档中找到任何示例。
我试图操纵渲染代码
<?= $form->field($model, 'name')->checkbox()->label('Hi'); ?>
但似乎我需要修改ActiveForm本身。如何在默认情况下选中复选框?
答案 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;
}
我知道这不是一个优雅的解决方案,但它正在发挥作用。