如何在Laravel/Inertia中无袋传递错误信息



我正试图通过以下方式验证一些数据:

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"

相关内容

  • 没有找到相关文章

最新更新