Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用自定义json响应的Laravel验证_Json_Laravel_Validation - Fatal编程技术网

使用自定义json响应的Laravel验证

使用自定义json响应的Laravel验证,json,laravel,validation,Json,Laravel,Validation,快速提问。 是否可以更改laravel的JSON验证响应? 这是我在Laravel中构建的自定义API 验证过程 $validation = $this->validate( $request, [ 'user_id' => 'required', ]); 响应在json中显示如下 { "message": "The given data was invalid.", "errors": { "user_id": [

快速提问。 是否可以更改laravel的JSON验证响应? 这是我在Laravel中构建的自定义API

验证过程

$validation = $this->validate( 
    $request, [
        'user_id' => 'required', 
    ]);
响应在json中显示如下

{
  "message": "The given data was invalid.",
  "errors": {
    "user_id": [
      "The user id field is required."
    ],
  }
}
最好是这样

{
    "common:" [
        "status": "invalid",
        "message": "Param xxxx is required",
    ],
}
改变这一点的最佳方式是什么? 有可能吗


谢谢。

您可以做到这一点,它将在全球范围内得到反映。 导航到下面的文件夹并使用Controller.php app/Http/Controllers

use Illuminate\Http\Request;
在Controller.php中编写下面的方法,并根据需要更改响应

public function validate(
    Request $request,
    array $rules,
    array $messages = [],
    array $customAttributes = [])
{
    $validator = $this->getValidationFactory()
        ->make(
            $request->all(),
            $rules, $messages,
            $customAttributes
        );
    if ($validator->fails()) {
        $errors = (new \Illuminate\Validation\ValidationException($validator))->errors();
        throw new \Illuminate\Http\Exceptions\HttpResponseException(response()->json(
            [
                'status' => false,
                'message' => "Some fields are missing!",
                'error_code' => 1,
                'errors' => $errors
            ], \Illuminate\Http\JsonResponse::HTTP_UNPROCESSABLE_ENTITY));
    }
}

我已经在Laravel 5.6上试用过,也许这对您有用。

您为什么要更改它?您可以在前端管理它。as laravel一次返回元素的所有错误。在您的格式中,它只是一个,用于返回json的自定义api函数。意思是获得一个json格式的特定模板,并根据当前响应重新格式化您的预期结果。您到底需要什么?是的,请解释你为什么需要这个?你能把你的代码显示在你返回laravel验证消息的地方吗?现在laravel自己用下面的方式进行验证$验证=$this->validate($request,['user_id'=>'required',]);谢谢,我在找这个。如果我只想显示一个错误怎么办?这也可能吗?与验证类似,验证是用户id和用户名,但我认为它们都丢失了。我只想显示用户id的错误,而不是用户名的错误。@WesleySchravendijk,您可以对属性使用
bail
规则。我尝试过bail函数,但不知怎的,它在laravel 5.7中不起作用。例如;'用户_id'=>“保释|必需”,