2017-08-01 19 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]) ?>