yii2 ActiveForm 中默认选中复选框

问题描述 投票:0回答:3

我有

ActiveForm
复选框:

<?= $form->field($model, 'is_necessary')->checkbox(['uncheck'=> 0]) ?>;

我想让它默认选中,当我选中时,它的值变成1,当取消选中时 - 0。我可以在没有任何

javascript
的情况下实现这一点吗?

我试过了:

<?= $form->field($model, 'is_necessary')->checkbox(['uncheck'=> 0, 'value'=>false]) ?>;

选项

'value'=>false
默认选中我的复选框,但随后在控制器中我收到
NULL
,也不是
1
0

php yii2 active-form
3个回答
2
投票

只需在您的控制器或视图中添加以下代码(不推荐)

$model->is_necessary = true;

上面的代码工作正常。但你应该在

之前添加此代码
$model->load(Yii::$app->request->post)

方法或将发布数据分配给您的模型。否则您的复选框将随时被选中;


1
投票

最好的方法是在模型中覆盖

init()

public function init() {
    parent::init ();
    $this->is_necessary  = 1;
}

并且您不需要按照

'uncheck'=> 0,
通过
DOCS

uncheck
string
,与未选中状态相关的值 单选按钮。如果不设置,则采用默认值
0
。这 方法将渲染一个隐藏的输入,这样如果单选按钮没有 检查并提交后,该属性的值仍然是 通过隐藏输入提交给服务器。如果你不想要任何 隐藏输入,您应该明确将此选项设置为空。


0
投票
field($model, 'status')->checkbox(array('label'=>'在报告上显示其他收入','checked'=>true)) ; ?>
© www.soinside.com 2019 - 2024. All rights reserved.