资讯专栏INFORMATION COLUMN

ThinkPHP5踩过的坑

enali / 317人阅读

摘要:函数在框架初始化方法中无效当初做权限控制在判断是否有权限如果无权限就执行跳转跳转的函数是但是无论如何都无法跳转出去当时的版本是手册还不太完善后来得知必须得才可以跳转重定向完整代码分页参数的问题如果是普通分页没毛病但是分页后面有其他参数比

01:redirect函数在框架初始化方法中无效
当初做权限控制,在initialize判断是否有权限,如果无权限就执行跳转,跳转的函数是redirect,但是无论如何都无法跳转出去,当时的版本是5.0+,手册还不太完善,后来得知必须得 return $this->redirect();才可以跳转(重定向);
完整代码:

if(!oAuth($uid)) return $this->redirect($url);

02:分页参数的问题
如果是普通分页没毛病,但是分页后面有其他参数,比如条件查询后分页,点击下一页的时候参数就不见了,解决办法:
分页的第三个参数传:
["query"=>request()->param()]
完整代码

Db::User
->where($where)
->order($order)
->paginate(
    $pageSize, //每页的数量
    false, //是否简洁分页  关简洁分页很简单,简洁分页不会查询总条数,相对来说应该会比较快一点点,他只有上一页和下一个的按钮
    ["query"=>request()->param()]); //额外的参数

03:验证器中唯一验证
场景:一个手机号码只能注册一次,但是编辑的时候可以用当前的手机号码!

验证器代码:

    protected $rule = [
        "mobile" => "require|mobile|unique:user,mobile",
        "email" => "require|email|unique:user,email",
    ];

    protected $message = [
        "mobile.require" => "请输入手机号码!",
        "mobile.mobile" => "手机号码格式错误!",
    ];

但是在更新的时候会提示手机号码已经存在了,挺气的,当时找资料没找到,就看日志了,最后在日志中找到了;
原来只要在更新的时候再个验证器传入数据的时候将ID也传进去就可以了,验证器内部会自动排除主键为当前ID的数据;

04:模型的关联方法
在之前在每次查询的时候,都会使用动态关联延迟预载入:with
后来发现不写居然也可以,如果不写就不会执行关联查询,在视图中调用的时候直接使用也是可以了
比如:文章对应发布者:

public function article($id)
{
    return $this->find(id);
    //之前的写法    return $this->with("user")->find($id);
}

public function user()
{
    return $this->hasOne("User","id","uid");
}


//在模板中
{{$article.user.nickName}}

更多的以后再写

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30725.html

相关文章

  • ThinkPHP5练手Demo实战

    摘要:最近有个朋友有个小需求,刚好有时间,也刚好准备研究一下,听说规范了,而且更傻瓜化了。便做了这个论坛的小,开源出来玩玩,改天做两个模版。 最近有个朋友有个小需求,刚好有时间,也刚好准备研究一下tp5,听说tp5规范了,而且更傻瓜化了。便做了这个论坛的小Demo,开源出来玩玩,改天做两个模版。说句实话,TP5模型层,数据库层真的很好用 Env Docker docker大家肯定已经熟悉不过...

    opengps 评论0 收藏0
  • js轮询及踩过的坑

    摘要:背景下午四点,天气晴朗,阳光明媚,等着下班产品我希望页面上的这个数据实时变化开发,可以,用那个叫着的东西,再找一个封装好框架,如感觉自己好机智产品要开发好久开发嗯,三天,五天,还是产品我希望今天上线开发,,不能描述的语言,话说为什么不支持表 背景 下午四点,天气晴朗,阳光明媚,等着下班产品:我希望页面上的这个数据实时变化开发:···,可以,用那个叫着WebSocket的东西,再找一个封...

    phpmatt 评论0 收藏0
  • js轮询及踩过的坑

    摘要:背景下午四点,天气晴朗,阳光明媚,等着下班产品我希望页面上的这个数据实时变化开发,可以,用那个叫着的东西,再找一个封装好框架,如感觉自己好机智产品要开发好久开发嗯,三天,五天,还是产品我希望今天上线开发,,不能描述的语言,话说为什么不支持表 背景 下午四点,天气晴朗,阳光明媚,等着下班产品:我希望页面上的这个数据实时变化开发:···,可以,用那个叫着WebSocket的东西,再找一个封...

    bang590 评论0 收藏0
  • 使用node子进程spawn,exec踩过的坑

    摘要:最后发现使用子进程打开还真的就是使用到一定程度就挂掉。上面的简单流程就是启动一个子进程。逻辑就是,记录子进程的大小,一旦超过就掉子进程。我们在使用时,不知道设置,默认的是当我们子进程日志达到时,自动掉了。 showImg(https://segmentfault.com/img/bVrCnh); 如何在项目中实现热更新中提到的一个坑child_process的exec使用问题,下面文章...

    cppprimer 评论0 收藏0

发表评论

0条评论

enali

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<