我使用AJAX发送请求,我想以特殊方式格式化错误(尽管仍然是JSON。我想更改错误的数据结构并为其添加一些标记)
所以,显然$this->validate
显然会在未经我许可的情况下打印错误!我无法控制它,我必须使用验证器的静态方法
$whitelist = [
'title'=>'required',
'slug'=>'present' ,
'text'=>'present'
];
$validation = Validator::make($request->all(), $whitelist);
if($validation->fails())
{
format_output_likeIwant($validation->messages()->messages());
}
$another_whitelist = [
'some_other_info'=>'required',
];
出于好奇,有没有办法让我用现有的实例验证我的$another_whitelist
?或者我应该为每个列表创建一个新的验证器实例吗?
顺便说一下,有2个不同验证数组的原因是,我使用这个白名单/数组在数据库中保存/更新之前填充我的模型实例,并避免在大表的情况下编写大量额外代码。这里的2个列表属于不同的模型/表(see here for example)
我查看了laravel文档,似乎所有示例都假定单个验证列表
答案 0 :(得分:4)
听起来您想使用Validator::after()或Validator::mergeRules()。试试吧:
public function index(Request $request)
{
$mainRules = [
'title'=>'required',
'slug'=>'present' ,
'text'=>'present'
];
/** @var \Illuminate\Validation\Validator $validation */
$validation = Validator::make($request->all(), $mainRules);
if ($validation->fails()) {
//do something
}
$additionalRules = [
'author' => 'required'
];
$validation->mergeRules($additionalRules);
# validates $mainRules and $additionalRules together...
dump(($validation->fails()));
}