【发布时间】:2018-07-13 18:59:33
【问题描述】:
我想检查是否仅当两个“villes”具有相同名称时才填写表单输入“departement”。
在控制器内,这段代码完美地工作:
$rules=[ 'nom' => 'required', 'ville'=> 'required|exists:villes,nom'];
$messages = [
'depart.required' => 'Deux villes portent le même nom, preciser le
département'];
$validator = Validator::make($request->All(), $rules,$messages);
$validator->sometimes('depart_id', 'required|exists:departs,id', function
($input) {
return Ville::where('nom',$input->ville)->count()>1;
});
if ($validator->fails()) {
return redirect('admin/etab/create')
->withErrors($validator)
->withInput();
}
我将相同的代码放在表单请求类中:
public function rules()
{
$rules=[ 'nom' => 'required', 'ville'=> 'required|exists:villes,nom'];
$messages = [
'depart.required' => 'Deux villes portent le même nom, preciser le
département',
];
$validator = Validator::make($this->All(), $rules,$messages);
$validator->sometimes('depart_id', 'required|exists:departs,id', function
($input) {
return Ville::where('nom',$input->ville)->count()>1;
});
return $validator;
}
我收到"Type error: Argument 2 passed to Illuminate\Validation\Factory::make() must be of the type array, object given," 我认为错误消息不充分,但我找不到为什么这种方式不起作用
谢谢......
【问题讨论】:
-
不要覆盖框架类,只是,不要。查看laravel.com/docs/5.5/validation#form-request-validation
-
FormRequest 类中的 rules 方法应该返回一个数组,而不是一个 Validator 对象。这就是您在此处看到的错误。
-
@Robert 我知道规则不是我的代码的好地方,但我找不到 int 文档应该在 FormRequest 中的哪个位置放置我的代码...
-
@aprokryfos 抱歉,我没有重写框架请求类,我创建了一个 FormRequest 类。 (我编辑了帖子)
标签: laravel laravel-5 custom-validators