显示弹出消息并验证Yii2

时间:2017-12-13 14:09:58

标签: php yii2

在我的view.php中,我有一个关闭票据按钮。当我选择该按钮时,它将自动获得系统时间,状态将变为“完成”。

我想要尝试的是,当我单击关闭按钮时,如果票证已经完成,则time_end将不会被更改,它将显示类似于删除按钮的弹出消息。

这是我的代码:

public function actionClose($id)
{
    $model = $this->findModel($id);
 //     $model->status = ('Done');
 //     $model->time_end = date('y-m-d h-i-s');
 //     $model->save();
 //     return $this->redirect(['view', 'id' => $model->id]);

    if ($model->status == 'Done' && $model->time_end == date('y-m-d h-i-s')) {
        (['data' => ['prompt' => 'Ticket has already been closed!']]);
    } else {
        $model->status = ('Done');
        $model->time_end = date('y-m-d h-i-s');
        $model->save();
        return $this->redirect(['view', 'id' => $model->id]);

}

我的问题是,当点击关闭按钮并选择状态为“已完成”但已经有时间结束的票证时,即使票证状态已经“完成”,它仍会获得time_end。如何通过类似于view.php中删除按钮的弹出消息来防止它发生某种类型的验证

2 个答案:

答案 0 :(得分:1)

您可以使用Flash消息。

控制器:

if ($model->status == 'Done') {
   Yii::$app->session->setFlash('error', 'Ticket has already been closed!');
    return $this->redirect(['view', 'id' => $model->id]);
}

查看:

 <?= Yii::$app->session->getFlash('error'); ?>

答案 1 :(得分:0)

我终于得到了我的if if else条件是错误的,所以我做的是:

public function actionClose($id)
{
  $model = $this->findModel($id);
  //     $model->status = ('Done');
  //     $model->time_end = date('y-m-d h-i-s');
  //     $model->save();
  //     return $this->redirect(['view', 'id' => $model->id]);

if ($model->status == 'Done') {
    (['data' => ['prompt' => 'Ticket has already been closed!']]);
} else {
    $model->status = ('Done');
    $model->time_end = date('y-m-d h-i-s');
    $model->save();
    return $this->redirect(['view', 'id' => $model->id]);

}

但我仍然不知道如何显示弹出消息。