Php Laravel利用ValidationException
我正在使用Php Laravel利用ValidationException,php,laravel-5,error-handling,try-catch,Php,Laravel 5,Error Handling,Try Catch,我正在使用 $validator = Validator::make(...) …以验证我的输入。但是,为了API的目的,我不使用该方法,而是希望使用Laravel的验证异常类 目前,我正在尝试: // Model (Not Eloquent Model) Validator::make(...) // Controller try { $model->createUser(Request $request); } catch(ValidationException $ex) {
$validator = Validator::make(...)
…以验证我的输入。但是,为了API的目的,我不使用该方法,而是希望使用Laravel的验证异常类
目前,我正在尝试:
// 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-and-catch语句保持真正干净的控制器;因此,将任何和所有逻辑和排除在控制器之外
我如何利用
验证异常
来做到这一点?我不知道在您的$model->createUser(Request$Request)中发生了什么
,但如果您使用验证程序
facade,则必须自己处理验证,如下所示:
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);
太棒了,我不知道。谢谢我将改为在控制器上使用validate方法