网站首页 > 基础教程 正文
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,我们用的习惯了不想换,可以自己写。
前边讲了登陆,在验证完登陆账号密码要跳转到后台首页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写这几个方法,又可以沿用我们以前的习惯。
猜你喜欢
- 2024-11-27 php安全编程?python暴力破解,论python的牛逼性
- 2024-11-27 CVE-2024-4577 PHP CGI 远程代码执行漏洞分析
- 2024-11-27 使用VS Code调试PhpStudy环境里的代码
- 2024-11-27 Web安全之URL跳转漏洞
- 2024-11-27 01.linux上安装宝塔部署PHP项目
- 2024-11-27 教程 | 从零开始开发一个PHP留言板(三)——页面制作
- 2024-11-27 WordPress网站被利用xmlrpc.php攻击解决办法
- 2024-11-27 Nginx 反向代理学习及实例笔记
- 2024-11-27 phpMyAdmin使用教程(图文详解)
- 2024-11-27 CentOS8 安装数据库管理工具之phpMyAdmin5.1.1
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)