Yii 操作成功之后提示操作信息

技巧库 · forecho · 于 4年前 发布 · 5745 次阅读

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 小部件 让调用更简单。

参考资料:


如果这篇文章对您有帮助,不妨微信小额赞助我一下,让我有动力继续写出高质量的教程。

本帖已被设为精华帖!
共收到 3 条回复 Yii2基础用法
Outshine#14年前 0 个赞

setFlash的第一个参数貌似只能用successerror。。。

forecho#24年前 0 个赞

@Outshine #1楼 至少还有一个 info

Simon#34年前 0 个赞

什么都可以这个是自定义的并没有硬性规定

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册