使用自定义json响应的Laravel验证
快速提问。 是否可以更改laravel的JSON验证响应? 这是我在Laravel中构建的自定义API 验证过程使用自定义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": [
$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'=>“保释|必需”,