yii2.0自带有报错的方法,一般是site控制器里面的error方法,但是本人根据网上的教程搞了半天没弄好,就自己写了一个。
首先是选择放在哪个地方,一般是自己写的被其他控制器继承的总控制器里面,这样调用比较方便。
class BaseController extends \yii\web\Controller{
public function error($msg,$url){ $params = array('msg'=>$msg,'url'=>$url,'status'=>false); echo \Yii::$app->view->renderFile('@app/views/base/error.php',['params'=>$params]); Yii::$app->end(); } public function success($msg,$url){ $params = array('msg'=>$msg,'url'=>$url,'status'=>true); echo \Yii::$app->view->renderFile('@app/views/base/error.php',['params'=>$params]); Yii::$app->end(); } }
调用
class LoginController extends BaseController {public function actionLogin() {$this->error('用户名或密码错误','/login/index');}}
两个方法,一个成功,一个失败,我是在写一个页面里面,通过status区别成功还是失败,msg是报错信息,url是报错之后的跳转,下面是页面代码:
(我是用的弹窗插件,页面具体效果可自己编辑)
<link href="/css/sweetalert.css" rel="stylesheet" /> <script src="/js/jquery-1.8.3.min.js"></script> <script src="/js/sweetalert-dev.js"></script> <div> </div> <script> $(function() { var sta = "<?=$params['status']?>"; var url = "<?=$params['url']?>"; var msg = "<?=$params['msg']?>"; if (sta) { swal({ title: "", text: msg, type: "success", showConfirmButton: true, confirmButtonColor: "#DD6B55", confirmButtonText: "确定", closeOnConfirm: false }, function () { location.href = url; }) }else{ swal({ title: "", text: msg, type: "error", showConfirmButton: true, confirmButtonColor: "#DD6B55", confirmButtonText: "确定", closeOnConfirm: false }, function () { location.href = url; }) } }); </script>效果图: