2015-06-11 10:56:08 50349次浏览 6条回答 8 悬赏 0 金钱

yii2 redirect进行页面跳转的时候, 可以像页面传递数据?比如下面的代码

return $this->redirect(['member/security']);

我一般是操作数据库后进行跳转,到底操作成功否? 我想带个提示信息给页面,让页面显示一下然后提示信息就没了?
该怎么办?
我现在的做法是将提示信息存放到session中,然后跳转后用了一次就删掉! yii2中有更好的办法?

最佳答案

  • FatrBaby 发布于 2015-06-11 10:58 举报

    使用yii的flash数据,其实他也是session,哇哈哈哈哈!
    为了保留一个完整的request-response流程,建议还是使用return response对象的方法。不过还有一种折中的办法就是封装一个显示信息的中间页,把你要显示的信息和url传过去,等显示完信息后,再跳转到目标地址。
    不过我还是建议使用flash数据的方法。

    1 条回复
    回复于 2015-06-12 11:19 回复

    恩恩,是的额 yii有弄好的方法 setFlash、 getFlash、 hasFlash! 还是用的session 谢谢!

  • 回答于 2015-06-11 11:06 举报

    return $this->redirect(['member/security', 'id' => 1]); 这样不行吗?

    , 觉得很赞
  • 回答于 2015-06-11 13:14 举报

    高级模板下可以直接使用这个:

    if ($model->save()) {
        Yii::$app->getSession()->setFlash('success', '保存成功');
    } else {
        Yii::$app->getSession()->setFlash('error', '保存失败');
    }
    return $this->redirect(['member/security']);
    

    基础模板我没用过,不知道它那里有没有高级模板下 frontend/widgets/Alert.php 这个小插件,有的话也是可以用的。

    3 条回复
    回复于 2015-06-12 11:20 回复

    恩恩,高级模板还没用过,谢谢哈

    回复于 2017-03-23 17:41 回复

    用了下 但是没变化 没有弹出保存成功

    回复于 2018-07-15 20:40 回复

    您好 这个问题您解决了吗?我可能也遇到了和您同样的问题

    觉得很赞
  • 回答于 2016-03-16 18:03 举报

    $this->redirect( Yii::$app->getUrlManager()->createUrl('url'));

    觉得很赞
  • 回答于 2017-06-06 11:59 举报

    综合@shiyang和@nomeore两位大大的答案完成了需要的效果,感谢

  • 回答于 2018-04-03 16:01 举报

    return $this->success(['/admin/index']);

    2 条回复
    回复于 2018-04-03 16:07 回复

    Controller中自定义 success()方法;
    public function success($url= [] ,$sec = 3){

        $url= empty($url)? ['/admin/main']: $url;
    
        $url= \yii\helpers\Url::toRoute($url);
    
        return $this->renderPartial('../routea/msg',['gotoUrl'=>$url,'sec'=>$sec]);
    
    }
    
    回复于 2018-04-03 16:12 回复

    自定义 msg.php:
    <?php

    / @var $this yii\web\View /

    / @var $name string /

    / @var $message string /

    / @var $exception Exception /

    use yii\helpers\Html;

    ?>

    <?php if(isset($errorMessage)):?> <?php echo '操作出错啦!' ?> <?php echo '

    '.$errorMessage.'

    ';?> <?php else:?> 恭喜!操作成功! <?php endif;?>

    该页将在3秒后自动跳转!

    <?php if(isset($gotoUrl)):?> 立即跳转 <?php else:?> 返回上一页 <?php endif;?>

    <?php if(!isset($gotoUrl)):?>
    
    setInterval("history.go(-1);",<?php echo $sec;?>000);
    
    <?php else:?>
    
    setInterval("window.location.href='<?php echo  $gotoUrl;?>'",<?php echo $sec;?>000);
    
    <?php endif;?>
    

您需要登录后才可以回答。登录 | 立即注册
刘阿勇
董事长

刘阿勇

注册时间:2014-10-01
最后登录:13小时前
在线时长:1686小时22分
  • 粉丝6
  • 金钱39259
  • 威望0
  • 积分56119

热门问题