序言

为了让用户有更加良好的体验,在操作成功或者失败后,来个提示并跳转页面,我就在Yii2上实现了这一个效果。在写这个跳转提示页的时候,找资料我发现网上关于这方面的中文资料真的很少,大家也都共享下吧!

需求分析

1、用户在操作成功或者失败后,来个提示并跳转页面。
2、使用这种方式$this->success(),$this->error()调用(仿造Yii2自带 $this->render()加载页面的方式)。

效果图

样式有点丑,但是功能是好的,要是不喜欢这样式大家可以自行美化一下!

代码分析

1、在控制器的基类Controller.php里边增加两个方法,这么写:

/**
* 通用成功跳转
* @param unknown $url 成功后跳转的URL
* @param number $sec 自动跳转秒数
* @return Ambigous <string, string>
*/
public function success($url= [] ,$sec = 3){
$url= empty($url)? ['/admin/main']: $url;
$url= \yii\helpers\Url::toRoute($url);
return $this->renderPartial('../base/msg',['gotoUrl'=>$url,'sec'=>$sec]);
} /**
* 通用错误跳转
* @param string $msg 错误提示信息
* @param number $sec
* @return Ambigous <string, string>
*/
public function error($msg= '',$sec = 3){
return $this->renderPartial('../base/msg',['errorMessage'=>$msg,'sec'=>$sec]);
}

2、在loginviewsbase的下面建立一个命名为msg.php的页面,代码如下:

<?php

/* @var $this yii\web\View */
/* @var $name string */
/* @var $message string */
/* @var $exception Exception */ use yii\helpers\Html; ?> <div class="site-error"> <div class="alert alert-danger page-none-alert">
<p>
<?php if(isset($errorMessage)):?>
<span class="glyphicon glyphicon-remove-sign text-danger"></span>
<span class="btn-lg text-danger"><?php echo '操作出错啦!' ?></span>
<?php echo '<p>'.$errorMessage.'</p>';?>
<?php else:?>
<span class="glyphicon glyphicon-ok-sign text-success"></span>
<span class="btn-lg text-success">恭喜!操作成功!</span>
<?php endif;?>
</p> <p class="text-muted">该页将在3秒后自动跳转!</p>
<p>
<?php if(isset($gotoUrl)):?>
<a href="<?php echo $gotoUrl?>">立即跳转</a>
<?php else:?>
<a href="javascript:void(0)" onclick="history.go(-1)">返回上一页</a>
<?php endif;?>
</p> </div>
<style>
.page-none-alert{margin: 100px 0 !important;
text-align: center !important;
font-size: 30px !important;}
</style> </div> <script> <?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;?> </script>

3、完成以上步骤之后就可以在login模块下的控制器里边直接调用了,调用方式如下:
成功的调用方式: return $this->success(['/site/login']);
失败的调用方式: return $this->error('数据修改失败!');

常见问题

1、跳转提示的JS写在如下我注释的地方了,写在那的话就不起作用了,得写在外面才行。

 <?php $this->beginBlock('JUMP_JS')?>
(function(){
//跳转提示的JS写在这了。不能写在这,写在这里就不起作用了。
});
<?php
$this->endBlock();
$this->registerJs($this->blocks['JUMP_JS'],\yii\web\view::POS_END);?>

相关资料

Yii2跳转提示页的写法:http://www.yiifans.com/forum.php?mod=viewthread&tid=11243

本文转载于:猿2048https://www.mk2048.com/blog/blog.php?id=h2ik00aiahj

阐述在Yii2上实现跳转提示页的更多相关文章

  1. PHP的简单跳转提示的实现

    在PHP开发中,尤其是MVC框架或者项目中,会碰到很多跳转情况,比如:登录成功或失败后的跳转等等. 以下以MVC框架开发中为基础,示例讲解: 在基础控制器类中:Conrtoller.class.php ...

  2. 在object,embed上添加跳转链接(视频上添加跳转)

    今天遇到个问题,就是在视频上添加跳转链接时,谷歌浏览器能正常跳转,但是ie下,却无效,视频使用object引入,<a>标签跟随其后采用绝对定位,和平时的图片加跳转操作一样.原来是需要加上& ...

  3. Firefox上运行自动化测试脚本提示元素无法点击“WebDriverException: Message: Element is not clickable at point“解决方法

    1. Firefox上运行脚本时提示“WebDriverException: Message: Element is not clickable at point (934.316650390625, ...

  4. ajaxFileUpload上传文件后提示下载的问题

    在某些版本浏览器下ajaxFileUpload上传文件会提示下载, 1:为什么? 可以观察到,即便返回 JsonResult 在返回的头中也没有任何消息体,直接理解为文本了. 2:解决方案 前端: f ...

  5. mac上SVN项目管理,提示被锁定的解决方法

    问题 mac上SVN项目管理,提示被锁定.不能commit.也不能update.提示 clean the working copy and then. .. 解决方法 watermark/2/text ...

  6. 用VS2010编写的C++程序,在其他电脑上无法运行,提示缺少mfc100.dll的解决办法

    问题: 在自己电脑上用VS2010编写的VC++程序(使用MFC库),不能在其他电脑上运行.双击提示: "无法启动此程序,因为计算机中丢失mfc100.dll 尝试重新安装该程序以解决此问题 ...

  7. 去掉eclipse上编辑时的提示

    用eclipse时,鼠标移到类上时会给出提示,如下图:

  8. ASP.NET页面上传文件时提示文件大小超过请求解决方法

    在webconfig中节点 <system.web> </system.web> 下加入以下代码:maxRequestLength为限制上传文件大小,executionTime ...

  9. js上拉跳转原理

    今天遇到一个需要上拉跳转的地方,其原理跟上拉加载有点类似,代码如下 window.onscroll = function(){ if(getScrollTop() + getClientHeight( ...

随机推荐

  1. Python:matplotlib.cm 色表

    官网:Choosing Colormaps in Matplotlib - Matplotlib 3.5.0 documentation Colormap与matplotlib.cm 我们以等高区域函 ...

  2. python浅拷贝与深拷贝浅析

    首先我们要明确,python中大多数都是浅拷贝,我们先说原因: 1.时间花费更少 2.内存更小 3.效率更高,浅拷贝只拷贝顶层数据,一般情况下比深拷贝效率高. 容器(如列表)切片是浅拷贝

  3. 反压缩 js ,我的万花筒写轮眼开了,CV 能力大幅提升

    前言 因为比较菜,所以经常需要读一些别人的代码学习学习. 有源码的代码当然好,但是很多网站不开源.这些网站的 js 又都是打包压缩过的,学习起来很难受. 所以我做了一个小工具,通过修改抽象语法树,来处 ...

  4. Windows用户如何安装cpolar内网穿透

    概述 本教程适合于Windows用户,安装并使用cpolar工具. 什么是cpolar? cpolar是一个非常强大的内网穿透工具,开发调试的必备利器 它可以将本地内网服务器的HTTP.HTTPS.T ...

  5. 彩色建模(四色原型) Object Modeling in Color学习心得

    定义4种类的原型,在UML中用不同颜色表示不同原型的对象     1. Party, Place, Thing Party: 事件的参与方,例如某人人.某组织等 Place: 事件的发生地,例如仓库. ...

  6. S5700上三层Vlan间隔离的例子

    转自:https://forum.huawei.com/enterprise/zh/forum.php?mod=viewthread&tid=247591 公司最近的无线覆盖做好了,但让人无语 ...

  7. 还不会用springboot写接口?快看这里,手把手操作,一发入魂~

    1.springboot简介 Spring Boot 可以轻松创建可以"直接运行"的独立的.生产级的基于 Spring 的应用程序. 特征 创建独立的 Spring 应用程序 直接 ...

  8. 基于python 实现冒泡排序算法

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/11/17 14:42 # @Author : gylhaut # @Site ...

  9. setState同步异步场景

    setState同步异步场景 React通过this.state来访问state,通过this.setState()方法来更新state,当this.setState()方法被调用的时候,React会 ...

  10. eclipse首次使用基本设置

        最近,一些刚开始学习Java的朋友使用eclipse遇到了一些编码导致的问题向我询问,那就总结一下首次安装eclipse后我们大体应该设置哪些基本东西吧~ 大神们呐就不用看啦. 一.修改工作空 ...