2015-02-23 52 views
1

以下是我实现我的index.php观点我的模式:Yii2显示错误消息里面莫代尔

<?= Html::button(
    'Change Password', 
    ['value' => Url::to(['changepassword']). '&id=' . $session['user_id'], 
    'class' => 'btn btn-success', 
     'id' => 'modButton' 

    ]) ?> 
<?= Yii::$app->session->getFlash('message'); ?> 
<?php 
    Modal::begin(['id' => 'modal2']); 
     echo "<div id='modContent'></div>";  
    Modal::end(); 
?> 

这里是我的模态形式:

<?php $form = ActiveForm::begin(); ?> 
<?= Yii::$app->session->getFlash('message'); ?> 
</br> 
<?= $form->field($model, 'password')->passwordInput(['value' => '', 'style' => 'width: 300px;'])->label('New Password') ?> 
<?= $form->field($model, 'ConfirmNewPassword')->passwordInput(['value' => '', 'style' => 'width: 300px;']) ?>  

<div class="form-group"> 
    <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Change Password', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> 
</div> 

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

在我控制器(只如果你需要的话):

if ($model->load(Yii::$app->request->post())) { 
    $model->password = sha1($model->password); 
    if($model->password !== sha1($model->ConfirmNewPassword)){ 
     Yii::$app->session->setFlash('message', "Passwords don't match!"); 
     return $this->redirect(['index']); 
    } 
} 

每当我在我的模态中输入一个无效的密码时,页面将重定向到单独页面中的模态窗体,并显示错误消息。我希望当用户输入一个无效的密码时,模块会保留错误信息。

我该怎么做?

回答

1

是因为您重定向到“指数”行动,如果密码是不是在控制器一样:

if($model->password !== sha1($model->ConfirmNewPassword)){ 
    Yii::$app->session->setFlash('message', "Passwords don't match!"); 
    return $this->redirect(['index']); 
} 

建设成为:

if($model->password !== sha1($model->ConfirmNewPassword)){ 
    Yii::$app->session->setFlash('message', "Passwords don't match!"); 
} 
else { 
    return $this->redirect(['index']); 
}