在我的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中删除按钮的弹出消息来防止它发生某种类型的验证
答案 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]);
}
但我仍然不知道如何显示弹出消息。