快捷搜索:  汽车  科技

thinkphp6获取模板路径:php手把手教你做网站

thinkphp6获取模板路径:php手把手教你做网站namespace app\controller; use app\BaseController; use think\facade\View; use think\facade\Db; class IndexController extends CmController //前边代码都一样,这里可以看到不是extends BaseController,而是我们自己创建的类CmController。前边讲了登陆,在验证完登陆账号密码要跳转到后台首页IndexController,创建该文件,编辑代码如下:$list=Db::name('web_news')->paginate(['list_rows'=>$pagesize 'query'=>request()->param()]); $page=$list->r

1、thinkphp6分页无法传递参数

tp6使用以下是无法传递分页的参数的,

$list=Db::name('web_news')->paginate($pagesize); $page=$list->render();

tp5的时候也不能传递参数可以按照下面方式修改,但是tp6不行

$list=Db::name('web_news')->paginate([$pagesize,query'=>request()->param()]); $page=$list->render();

以下是tp6正确的写法:

$list=Db::name('web_news')->paginate(['list_rows'=>$pagesize 'query'=>request()->param()]); $page=$list->render();

2、tp6中无法使用success、error、redirect方法

在tp6中继续使用$this->error();success,提示方法不存在,这是因为取消了error,success,redirect,我们用的习惯了不想换,可以自己写。

thinkphp6获取模板路径:php手把手教你做网站(1)

图1 页面$this->success效果图

前边讲了登陆,在验证完登陆账号密码要跳转到后台首页IndexController,创建该文件,编辑代码如下:

namespace app\controller; use app\BaseController; use think\facade\View; use think\facade\Db; class IndexController extends CmController //前边代码都一样,

这里可以看到不是extends BaseController,而是我们自己创建的类CmController。

打开以前跳转的模板,可以看到以下代码:

<?php if(isset($message)) {?> <p class="success"><?php echo(strip_tags($msg));?></p> <?php }else{?> <p class="error"><?php echo(strip_tags($msg));?></p> <?php }?>

$message存在是提示成功的跳转,反之是出错。

下面我们编辑CmController代码:

<?php namespace app\controller; use app\BaseController; use think\facade\View; use think\facade\Db; use think\facade\Config; use think\facade\Session; use checkdanger\Webscan; class CmController extends BaseController { //这里又 extends BaseController, //相当于加了cm这个中间类 public function __construct(){ header("Content-Type:text/html; charset=utf-8"); $webscan = new Webscan(); if ($webscan->check()) { exit( '系统检测到有攻击行为存在!'); } if(!Session::get('login_admin.user_name')){ header("location:".URL("login/index")); exit; } }

可以看到我们把危险检测,是否登陆过期都写在了该文件的构造函数里边。

这样做的好处是:

避免重复声明编码utf-8、避免重复检测危险代码、避免重复检测是否登陆;

在这个页面创建error success redirect方法,继续我们以前的习惯;

error方法:

public function error($info $url='' $wait=10){ if(!$url){ $url='javascript:history.go(-1);'; } View::assign('msg' $info); View::assign('url' $url); View::assign('wait' $wait); echo View::fetch("default/dispatch_jump"); //这里使用了echo,dispatch_jump就是以前版本的跳转模板; }

url为空的时候执行js跳转回上一页 wait默认等待时间的倒计时。

success方法:

public function success($info $url='' $wait=5){ if(!$url){ $url='javascript:history.go(-1);'; } View::assign('msg' $info); View::assign('url' $url); View::assign('wait' $wait); View::assign('message' 1); echo View::fetch("default/dispatch_jump"); }

由于模板内判断了message用于区别error和success,这里我们随便给message变量一个值:View::assign('message' 1);

redirect方法:

public function redirect($url){ header("location:".$url); exit; }

这里使用header跳转。

$this->success('成功排序');即为图1显示效果。

可以看到3个方法最后都是使用的echo

echo View::fetch("default/dispatch_jump");

如果想使用return

return View::fetch("default/dispatch_jump");

$this->success('成功排序');应改为 return $this->success('成功排序');

直接使用exit();也是可以的

exit(View::fetch("default/dispatch_jump"));

通过在CmController写这几个方法,又可以沿用我们以前的习惯。

猜您喜欢: