Php函数父级返回

  • 本文关键字:返回 函数 Php php oop
  • 更新时间 :
  • 英文 :


我有两个函数,使用一个类似的验证器

public function store( Request $request ) {
$validate = $this->validator( $request );
if ( $validate->fails() ) {
return response()->json( [ 'errors' => $validate->errors() ] );
}
}
public function update( Request $request, $id ) {
$validate = $this->validator( $request, $id );
if ( $validate->fails() ) {
return response()->json( [ 'errors' => $validate->errors() ] );
}
}
private function validator( Request $request, $id = "" ) {
$validator = Validator::make( $request->all(), [
'name'                  => 'required',
'email'                 => 'required|email|unique:users,email,' . $id,
'password'              => 'required|min:6|confirmed',
'password_confirmation' => "required",
'role'                  => "required"
] );
if ( $validate->fails() ) {
return response()->json( [ 'errors' => $validate->errors() ] );
}
return $validator;
}

在这个if验证器中,它将响应返回给验证器函数,而不是父函数。我想写函数验证器来检查并给出父级返回响应,因为我不想一次又一次地检查并返回

您可以创建一个继承Request并验证其输入的类。

在控制器端,您只有:

public function store(SomeRequestValidation $request ) {
//Do something because it has been validated in SomeRequestValidation
}
public function update(SomeRequestValidation $request) {
//Do something because it has been validated in SomeRequestValidation
}

注意:如果这是Laravel,我们谈论的是FormRequests

https://laravel.com/docs/5.6/validation#creating-表单请求

Edit:覆盖请求函数可以完成的一个小示例。

public function authorize(Request $request)
{
if (/*something*/) {
return true;
}
return false;
}
public function forbiddenResponse()
{
return json_encode("Oh no you don't");
//return response()->view('errors.403');
}

https://laravel.com/api/5.6/Illuminate/Foundation/Http/FormRequest.html

您可以抛出错误,这将给出直接响应,现在不需要在函数中一次又一次地返回,

throw new HttpResponseException(response()->json($error, 422, $headers));

我想这会对你有所帮助。

最新更新