【发布时间】:2017-04-27 20:06:31
【问题描述】:
我有一个应用程序,它在继续执行代码之前对每个方法进行字段验证。
public function authenticateSeller(Request $request)
{
$fields = $request->all();
$rules = config("validation-rules.loads.access");
$validator = Validator::make($fields, $rules);
if($validator->fails()) {
throw new CustomFieldValidation($validator);
}
}
我需要将对象传递给 CustomFieldValidation 类以传递给 Laravel Handler 类来处理错误并以 JSON 形式返回。如何做到这一点?
class CustomFieldValidation extends \Exception
{
public function __construct($validator,$message= NULL, $code = NULL, Exception $previous = NULL)
{
parent::__construct($message, $code, $previous);
}
}
我希望操纵消息处理程序的呈现方法。
public function render($request, Exception $exception)
{
if($exception instanceof CustomFieldValidation) {
foreach($validator->errors()->all() as $message) {
$errors[] = [
'message' => $message,
];
}
return response()->json($errors, 400, ['Content-type' => 'application/json; charset=utf-8'], JSON_UNESCAPED_UNICODE);
}
return parent::render($request, $exception);
}
有人可以帮我吗?
【问题讨论】:
-
如果您只是要立即处理它,为什么还要抛出一个错误呢?只需返回您的 json。
-
非常感谢!实际上,我的想法是创建一个我总是可以在每个方法的开头调用的函数,例如 checkFields ($ fields, $ rules) 并且这个函数在验证失败的情况下会抛出一个异常,该异常将始终以相同的方式处理方式,我只需要执行一次代码。
标签: php laravel exception-handling laravel-5.4