我的应用正在api端点通过public function create( Request $request )
{
$organization = new Organization;
// Validate user input
$this->validate($request, [
'organizationName' => 'required',
'organizationType' => 'required',
'companyStreet' => 'required'
]);
// Add data
$organization->organizationName = $request->input('organizationName');
$organization->organizationType = $request->input('organizationType');
$organization->companyStreet = $request->input('companyStreet');
$organization->save();
return response()->json($organization);
}
请求创建新条目。
现在,如果任何验证失败,则laravel 5.3将请求重定向到主页,而不是返回错误json。
这是我的控制器:
final static DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
如果没有与验证,则实体将在数据库中添加成功没有问题,但如果有问题与验证请求,那么,而不是将所有的错误消息的JSON响应它重定向回主页。
如何将验证返回类型设置为json,因此对于每个请求,如果验证失败,则laravel将默认将所有错误消息发送为json。
答案 0 :(得分:6)
您可以按以下方式进行验证:
$validator = \Validator::make($request->all(), [
'organizationName' => 'required',
'organizationType' => 'required',
'companyStreet' => 'required'
]);
if ($validator->fails()) {
return response()->json($validator->errors(), 422)
}
答案 1 :(得分:3)
问题中使用的验证按照laravel的建议进行查看。重定向的原因是它抛出了一个异常,你可以使用下面的代码轻松捕获它。因此,最好使用推荐的代码方式,而不是再次重写框架代码:)
public function create( Request $request )
{
$organization = new Organization;
// Validate user input
try {
$this->validate($request, [
'organizationName' => 'required',
'organizationType' => 'required',
'companyStreet' => 'required'
]);
} catch (ValidationException $e) {
return response()->json($e->validator->errors(), 422);
}
// Add data
$organization->organizationName = $request->input('organizationName');
$organization->organizationType = $request->input('organizationType');
$organization->companyStreet = $request->input('companyStreet');
$organization->save();
return response()->json($organization, 201);
}