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方法