例如控制器中有如下代码
$data = [];
$Model = new Articles();
$result = $Model->allowField(true)->validate(true)->save($data);即使Articles验证器存在,并且有 ti
在think\Model类788行save方法代码中
public function save($data = [], $where = [], $sequence = null)
{
if (!empty($data)) {
// 数据自动验证
if (!$this->validateData($data)) {
return false;
}$data参数默认值是空数组,并且自动验证的条件是$data不为空。所以会发生传入空数组则跳过验证的情况。修改save方法
public function save($data = null, $where = [], $sequence = null)
{
if (is_array($data)) {将$data参数默认值设为null,判定条件改为 is_array($data)这样就能在用户输入空数据时自动验证了
这个问题从5开始到5.0.6都有
不知道我说的场景大家会不会遇到,也不知道这算不算官方的bug。若有其他解决方案还请大家指导
