是否可以从嵌套数组中扩展验证器响应。通常,Laravel以“点符号”作为回应,例如:
[
'organisation.name' => 'required|max:60|min:3',
'organisation.avatar' => '',
'organisation.phone' => 'required|max:25|min:5',
'organisation.paid_staff' => 'required|numeric'
]
organisation.name
wold返回错误:
{
"message": "422 Unprocessable Entity",
"errors": {
"organisation.name": [
"The organisation name has already been taken."
]
},
"statusCode": 422
};
我想在这里扩展点符号:
{
"message": "422 Unprocessable Entity",
"errors": {
"organisation": {
"name": [
"The organisation name has already been taken."
]
}
},
"statusCode": 422
};
有人能说清楚这个吗?
答案 0 :(得分:1)
我们通过扩展********mail.com
类方法App\Exceptions\Handler
实现了这一结果,如下所示:
invalidJson()
我们有一个名为/**
* Convert a validation exception into a JSON response.
*
* @param \Illuminate\Http\Request $request
* @param \Illuminate\Validation\ValidationException $exception
* @return \Illuminate\Http\JsonResponse
*/
protected function invalidJson($request, ValidationException $exception)
{
$jsonResponse = parent::invalidJson($request, $exception);
$original = (array) $jsonResponse->getData();
$jsonResponse->setData(array_merge($original, [
'statusCode' => $exception->status,
'errors' => Arrays::expandDotNotationKeys((array) $original['errors']),
]));
return $jsonResponse;
}
的实用工具类,方法Arrays
如下所示:
expandDotNotationKeys()
完成!无需更改本地语言文件。
答案 1 :(得分:0)
我自己还没有这样做,但看着docs提示 -
在许多情况下,您可能希望指定属性特定的自定义 语言文件中的消息,而不是直接传递给它 验证器。为此,请将您的消息添加到自定义数组中 resources / lang / xx / validation.php语言文件。
您的语言文件
'custom' => [
'organisations' => [
'name' => [
'required' => 'The organisation name has already been taken!',
],
],
],