翻译“给定的数据无效。”在Laravel 5.6中

时间:2018-12-21 09:50:52

标签: laravel validation

如何翻译“给定的数据无效”。到Laravel 5.6? 谢谢

6 个答案:

答案 0 :(得分:4)

正如上面的JsWizard所述,您可以通过向app\Exceptions\Handler.php添加以下行来处理该特定异常

只是为了改善答案,您需要添加ValidationException

use Illuminate\Validation\ValidationException as ValidationException;

,然后将以下内容添加到render()方法中:

if ($exception instanceof ValidationException) {

    return response()->json(['message' => 'YOUR CUSTOM MESSAGE HERE', 'errors' => $exception->validator->getMessageBag()], 422);

}

答案 1 :(得分:3)

resources/lang/{lang_code}/validation

中查找并替换该消息
   'exists'               => 'The selected :attribute is invalid.',

在这里用您的语言代替:attribute

OR

添加以下添加到文件app\Exceptions\Handler.php的render()方法中的行

if ($exception instanceof ValidationException)
  return response()->json(['message' => 'Your error message here', 'errors' => $exception->validator->getMessageBag()], 422); //type your error code.

编码愉快!! :)

答案 2 :(得分:3)

“给定的数据无效。”硬编码

文件: src / Illuminate / Validation / ValidationException.php

    public function __construct($validator, $response = null, $errorBag = 'default')
    {
   -    parent::__construct('The given data was invalid.');
   +    parent::__construct(__('The given data was invalid.'));
        $this->response = $response;
        $this->errorBag = $errorBag;

从提交: https://github.com/laravel/framework/pull/22112/commits/b70372fd0031e5fabaee462c913b19b665becaf3

答案 3 :(得分:1)

很抱歉,我的回复很晚,我发现在Laravel 5.8及更高版本中可以使用的方法。 希望您还在寻找答案,这是我的。

如Laravel的官方文档所述:

在AJAX请求期间使用ProjectEmployees方法时,Laravel将不会生成重定向响应。相反,Laravel会生成一个包含所有验证错误的JSON响应。该JSON响应将以422 HTTP状态代码发送。

因此,您不能翻译响应,因为它是laravel核心的一部分,并且经过硬编码,并且在响应中执行相同操作不是解决方案。

因此,我建议您对表单使用Request Validation方法,然后扩展FormRequest类的一部分称为Map<Long, Long>的方法。

您可以使用artisan控制台创建新的RequestValidation: ProjectEmployee

拥有validate文件后,添加带有建议行的方法 failedValidation 方法:

failedValidation(Validator $validator)

我们的422个回复结果是:

I used Postman for the Request, check the response.
希望对以后的参考有所帮助。

最好的问候

答案 4 :(得分:1)

在laravel 8 app/Exceptions/Handler.php 中只需覆盖如下方法

/**
 * 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)
{
    return response()->json([
        'message' => __('validation.headermsg'),
        'errors' => $exception->errors(),
    ], $exception->status);
}

那就是享受

答案 5 :(得分:0)

遗憾的是,Laravel 团队将此标记为非问题(他们在这类事情上非常固执)。

我发现规避该问题的最简洁方法是在 app/Exceptions/Handler.php 中添加以下代码:

public function render($request, Throwable $e)
{
    if ($e instanceof ValidationException)
    {
        if ($request->expectsJson()) {
            return response()->json([
                'message'=>__($e->getMessage()),
                'errors'=> $e->errors(),
            ],$e->status);
        }
    }
    return parent::render($request, $e);
}

然后在resources/lang/[language-code].json中添加翻译;例如为意大利创建一个名为 resources/lang/it.json 的文件,内容如下:

{
    "The given data was invalid." : "I dati inseriti contengono errori."
}

代码只会替换 JSON 响应中的消息字符串(根据需要)。