【发布时间】:2020-05-05 10:14:36
【问题描述】:
我在用户模型中有这个方法:
public function setDocAttribute($value){
return $this->attributes['doc'] = $this->clear($value);
}
清除方法:
private function clear(?string $arg){
if(empty($arg)){
return '';
}
return str_replace(['.','-'], '', $arg);
}
然后我有一个使用此规则扩展 FormRequest 的类 User:
class User extends FormRequest
{
public function rules()
{
return [
'doc' => (!empty($this->request->all()['id']) ? 'required|unique:users,doc,' . $this->request->all()['id'] : 'required|unique:users, doc'),
...
];
}
}
但规则的独特部分无法正常工作,因为 doc 输入具有 pontuation,因此它将例如“0043-23.00”与“00432300”进行比较,并且它们不同,因此验证通过。要在用户表单中解决此问题,请使用 all() 方法清除“文档”输入:
public function all($keys = null)
{
return $this->clear($this->request->all());
}
方法 clear():
public function clear($inputs)
{
$inputs['doc'] = str_replace(['.','-'],'', $this->request->all()['doc']);
return $inputs;
}
但是像这样显示一个错误:
"类型错误 传递给 Illuminate\Validation\Factory::make() 的参数 1 必须是数组类型,给定 null”。
你知道为什么吗?
【问题讨论】: