2016-04-28 7 views
0

私のアプリケーションでは、ユーザーと呼ばれるモデルがあります。ここで検証のシナリオを実装しました。シナリオ付きYii2モデルは、パスワードフィールド以外のすべてを保存します

const SCENARIO_RESET_PASSWORD = 'passwordReset'; 

public function rules() 
{ 
    return[ 
     [['name','surname','password','username','id_role'], 'required'], 
     [['email','email2'], 'email'], 
     [['username','email'], 'unique'], 
     ['confirmPassword', 'compare', 'compareAttribute'=>'password', 'on' => self::SCENARIO_RESET_PASSWORD] 
    ]; 
} 

この設定では、新しいユーザーを作成して削除し、[パスワード]以外のすべてのフィールドを更新できます。

これは私のコントローラ内のアクションです:

public function actionUpdate($id) 
{ 
    $user = User::findOne($id); 

    if($user->load(Yii::$app->request->post())&& $user->validate()) { 
     $user->update(); 
     $this->redirect(\yii\helpers\Url::toRoute('index')); 
    } 

    return $this->render('update',[ 
     'user' => $user, 
    ]); 

} 

私はすでにフィールド「パスワード」が成功を収めた後のパラメータに渡されていることをチェックしました。

、これが私の見解です:

<h1> Edit User </h1> 
<?php 
    $form = ActiveForm::begin([ 
      'id' => 'active-form', 
      'options' => [ 
       'class' => 'form-horizontal', 
       'enctype' => 'multipart/form-data' 
      ], 
     ]); 
?> 

<?= $form->errorSummary($user); ?> 

<?= $form->field($user, 'name') ?> 

<?= $form->field($user, 'surname') ?> 

<?= $form->field($user, 'username') ?> 

<?= $form->field($user, 'email') ?> 

<?= $form->field($user, 'password')->passwordInput() ?> 

<?php if(Yii::$app->user->identity->id_role === User::USER_ADMIN): ?> 

<?= $form->field($user, 'id_role')->dropDownList(
     Role::find()->select(['name','id'])->indexBy('id')->column(), 
     ['prompt'=>'Select a role'] 
     ); 
?> 

<?php endif; ?> 

<div class="form-group"> 
    <?= Html::submitButton('Save the user', ['class' => 'btn btn-success']) ?> 
</div> 

<?php ActiveForm::end(); ?> 

私は、このエラーに

+0

''on' => self :: SCENARIO_RESET_PASSWORD ''を削除して一度だけチェックしてください。 –

答えて

1

を得ている理由は、私が本当に知りません

'on' => self::SCENARIO_RESET_PASSWORD 

または あなたにあなたのシナリオを定義を削除してくださいコントローラの動作は、

$user->scenario = 'SCENARIO_RESET_PASSWORD'; 
+0

試しましたが動作しません – giovaZ

+0

モデルでシナリオを使用せず、モデルから削除してコントローラでのみ使用してください。 –

+0

モデルとコントローラからシナリオを完全に削除しましたが、どちらも動作しません – giovaZ

関連する問題