我正在使用......
$validator = Validator::make(...)
...验证我的输入。但是,出于API目的,我不想使用该方法,而是希望使用Laravel的Validation Exception类。
目前,我正在尝试:
// Model (Not Eloquent Model)
Validator::make(...)
// Controller
try { $model->createUser(Request $request); }
catch(ValidationException $ex)
{
return response()->json(['errors'=>$ex->errors()], 422);
}
但是,模型中的验证似乎没有抛出任何验证异常。我仍然可以使用$validator->errors()
来解决错误。然而,这仍然是我的目的。
我试图用try和catch语句保持真正干净的控制器;因此,保持任何和所有逻辑和控制器。
我如何利用ValidationException
来做到这一点?
答案 0 :(得分:2)
我不知道您的$model->createUser(Request $request);
会发生什么,但如果您使用Validator
外观,那么您必须自己处理验证,如下所示:
use Validator;
...
$validator = Validator::make($input, $rules);
if ($validator->fails()) {
// With a "Accept: application/json" header, this will format the errors
// for you as the JSON response you have right now in your catch statement
$this->throwValidationException($request, $validator);
}
另一方面,您可能希望在控制器中使用validate()
方法,因为它可以为您完成上述所有操作:
$this->validate($request, $rules);