Laravel使用ValidationException

时间:2017-07-06 10:34:20

标签: php laravel-5 error-handling try-catch

我正在使用......

$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来做到这一点?

1 个答案:

答案 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);