sen*_*nty 22 javascript php jquery laravel laravel-5
我试图将值发布到验证中并将响应作为json返回,而不是return view
在文档中给出.
$validator = Validator::make($request->all(), [
'about' => 'min:1'
]);
if ($validator->fails()) {
return response()->json(['errors' => ?, 'status' => 400], 200);
}
Run Code Online (Sandbox Code Playgroud)
帖子是由ajax制作的,所以我也需要在ajax中收到回复.
我发现为了防止在返回的响应中刷新页面,我必须在数组外给它一个200的状态代码.但我无法弄清楚要给这个'errors'
部分什么.我应该在那里写什么?
Pey*_*n.H 34
您可以使用$validator->messages()
它返回一个数组,其中包含有关验证程序的所有信息,包括错误.该json
函数接受数组并将其编码为json字符串.
if ($validator->fails()) {
return response()->json($validator->messages(), 200);
}
Run Code Online (Sandbox Code Playgroud)
你也可以告诉 Laravel 你想要一个 JSON 响应。将此标头添加到您的请求中:
'Accept: application/json'
Run Code Online (Sandbox Code Playgroud)
Laravel 会返回一个 JSON 响应。
在Laravel 5.4中,该validate()
方法可以自动检测您的请求是否为AJAX请求,并相应地发送验证程序响应。
请参阅此处的文档
如果验证失败,将生成重定向响应以将用户发送回其先前的位置。错误还将闪现到会话中,因此可以显示。如果请求是AJAX请求,则将向用户返回带有422状态代码的HTTP响应,其中包括验证错误的JSON表示形式。
因此,您可以简单地执行以下操作:
Validator::make($request->all(), [
'about' => 'min:1'
])->validate();
Run Code Online (Sandbox Code Playgroud)