我正试图通过以下方式验证一些数据:
public function update($user, array $input)
{
$v = Validator::make($input, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'email', 'max:255', Rule::unique('users')->ignore($user->id)],
'photo' => ['nullable', 'mimes:jpg,jpeg,png', 'max:1024'],
]);
//MORE CODE
}
然后,代替"//"更多代码";,我试着这样做:
$messagesArray = [];
foreach ($v->messages()->all() as $message) {
$messagesArray[] = $message;
}
if($v->fails()){
return redirect()->back()->withErrors($messagesArray, 'errors');
}
我也尝试了其他的可能性(没有成功(,比如使用Request $request
作为参数,但由于某种原因,我不知道,我不被允许
问题
我的问题是,我使用的是一个巨大的应用程序,无法在客户端使用包。我需要将错误道具作为一个对象(如:{'errors' : {0:"error1", 1:"error2"...}}
(来传递,但目前我正在传递这样的东西:{'errors': {pagename:{0:"error1, 1:"error2"}}}
,也就是说,我无法传递包中的错误。
最后一条评论
我知道Validator类有validateWithBag()
方法,我想知道是否没有像validateWithoutBag()
这样的选项。。。
我已经阅读了Laravel文档和其他问题,但是。。。无
感谢您的阅读!
我解决了这个问题。errorBags设置在Vue组件上。例如:
this.form.post(route("user-profile-information.update"), {
errorBag: "updateProfileInformation",
preserveScroll: true,
onSuccess: () => this.clearPhotoFileInput(),
});
在这个片段中,客户端设置了errorBag,而不是服务器端。
无袋验证
要在没有袋子的情况下进行验证,必须将->validateWithBag("BagName");
更改为->validate();
,并删除Vue组件上的errorBag: "BagName"
。