php中tp框架的坑,ThinkPHP5踩过的坑

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}}

更多的以后再写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值