基于thinkphp6.0的success、error实现方法
最近把项目升级到tp6.0,一开始比较顺利,安装文档升级,但是升级指导指出:
系统不再提供基础控制器类 think\Controller,原来的 success、 error、 redirect和 result方法需要自己在基础控制器类里面实现。
这意味着需要自己来实现原来的一系列的函数
我这里参考to5.1的跳转源码,进行改进得到,具体步骤如下:
1、app目录下新建一个tpl文件夹,放入dispatch_jump.tpl文件,这个可以直接到原来的tp5中copy
2、在config文件夹的app.php中添加配置模板文件的路径
//默认跳转页面对应的模板文件 'dispatch_success_tmpl'=>app()->getRootPath().'/app/tpl/dispatch_jump.tpl', 'dispatch_error_tmpl'=>app()->getRootPath().'/app/tpl/dispatch_jump.tpl',
3、在基类BaseController中添加下面的代码:
usethink\exception\HttpResponseException; usethink\Response; …… /** *操作成功跳转的快捷方法 *@accessprotected *@parammixed$msg提示信息 *@paramstring$url跳转的URL地址 *@parammixed$data返回的数据 *@paraminteger$wait跳转等待时间 *@paramarray$header发送的Header信息 *@returnvoid */ protectedfunctionsuccess($msg='',string$url=null,$data='',int$wait=3,array$header=[]) { if(is_null($url)&&isset($_SERVER["HTTP_REFERER"])){ $url=$_SERVER["HTTP_REFERER"]; }elseif($url){ $url=(strpos($url,'://')||0===strpos($url,'/'))?$url:$this->app->route->buildUrl($url); } $result=[ 'code'=>1, 'msg'=>$msg, 'data'=>$data, 'url'=>$url, 'wait'=>$wait, ]; $type=$this->getResponseType(); //把跳转模板的渲染下沉,这样在response_send行为里通过getData()获得的数据是一致性的格式 if('html'==strtolower($type)){ $type='view'; } $response=Response::create($result,$type)->header($header)->options(['jump_template'=>app()->config->get('app.dispatch_success_tmpl')]); thrownewHttpResponseException($response); } /** *操作错误跳转的快捷方法 *@accessprotected *@parammixed$msg提示信息 *@paramstring$url跳转的URL地址 *@parammixed$data返回的数据 *@paraminteger$wait跳转等待时间 *@paramarray$header发送的Header信息 *@returnvoid */ protectedfunctionerror($msg='',string$url=null,$data='',int$wait=3,array$header=[]) { if(is_null($url)){ $url=$this->request->isAjax()?'':'javascript:history.back(-1);'; }elseif($url){ $url=(strpos($url,'://')||0===strpos($url,'/'))?$url:$this->app->route->buildUrl($url); } $result=[ 'code'=>0, 'msg'=>$msg, 'data'=>$data, 'url'=>$url, 'wait'=>$wait, ]; $type=$this->getResponseType(); if('html'==strtolower($type)){ $type='view'; } $response=Response::create($result,$type)->header($header)->options(['jump_template'=>app()->config->get('app.dispatch_success_tmpl')]); thrownewHttpResponseException($response); }
总结
以上所述是小编给大家介绍的基于thinkphp6.0的success、error实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。