2017-08-01 45 views
1

我需要在控制器中使用Yii2 Framework获取名为Password的复选框的值。Yii2:如何从控制器获取checkox的值

在我_form.php这个我定义的复选框:

<?= Html::checkbox('password', false, $options = ['label' => 'Reset password']) ?> 

在我UserController.php我有actionUpdate功能:

public function actionUpdate($id) 
{ 
    $model = $this->findModel($id); 
    if ($model->load(Yii::$app->request->post()) && $model->save()) { 
     return $this->redirect(['view', 'id' => $model->id]); 
    } else { 
     echo '<pre>'; 
     echo Yii::$app->request->post()['password']; 
     echo '</pre>'; 
     return $this->render('update', [ 
      'model' => $model, 
     ]); 
    } 
} 

我总是得到值,而不是truefalse

+0

我不是PHP的专家,肯定不是一个Yii的,但在我看来,如果你可能会得到有所有选中的复选框的ID数组。你可以仔细检查一下(如果你选择的复选框的ID是1,并且这是你接收它的原因)? – Eedoh

+2

Yii复选框返回1为真(选中),0为假 –

+0

@YasinPatel。请将您的评论写为答案,以便我可以选择为接受的答案。 –

回答

1

复选框回报1 True(选中)和假(不打勾)返回0。

可以在控制器检查如下

if(isset($model->password) && $model->password =="1") //check box is checked 
{ 
    // code 
} 
2

首先,有错误代码,它应该是:

<?= Html::checkbox('password', false, ['label' => 'Reset password']) ?> 

时,默认情况下选中此复选框产生1。如果你想发送0当没有选择复选框,则必须添加:

<?= Html::checkbox('password', false, ['label' => 'Reset password', 'uncheck' => 0]) ?>