GetYii 发布一篇文章或者评论一条消息之后都会有提示操作是否成功的信息,那么这是怎么实现的呢?
其实很简单,Yii 框架本身就提供了这个功能,利用 setFlash
来实现,一种特殊的 session 实现,被调用一次之后会自动销毁:
在 Controller 里面的 action 里面我们可以这样写:
public function actionCreate()
{
$model = new Topic();
if ($model->load(Yii::$app->request->post())) {
$model->user_id = Yii::$app->user->id;
if ($model->save()) {
return \Yii::$app->getSession()->setFlash('success', '发布成功');
}
return \Yii::$app->getSession()->setFlash('error', '发布失败');
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
在视图里面我们这样调用 Flash
:
<?= Yii::$app->session->getFlash('error'); ?>
基本上就是以上这个思路,关于视图的 getFlash
你可以放在 layout 布局文件里面,其实高级版本的 Yii2 已经帮我做了这件
事情,并且高级版还帮忙封装了 Alert 小部件
让调用更简单。
参考资料:
如果这篇文章对您有帮助,不妨微信小额赞助我一下,让我有动力继续写出高质量的教程。