【问题标题】:Laravel Nova - Can`t see validation error messagesLaravel Nova - 看不到验证错误消息
【发布时间】:2018-11-15 04:44:28
【问题描述】:

我正在使用 Nova 仪表板进行一个项目。由于某种原因,我看不到验证错误消息。

如果出现验证错误,我可以在浏览器控制台中将其视为异常。但不是在 Nova UI 中。

如果表单的所有字段都输入正确,我可以看到成功消息。

我是 Nova 的新手,谁能帮我调试一下这个问题?我的意思是我不知道该去哪里解决这个问题

来自浏览器的错误跟踪

{
    "errors":"Sorry, something went wrong.",
    "exception":"Illuminate\\Validation\\ValidationException",
    "message":"The given data was invalid.",
    "trace":[{
        "file":"\/home\/ausvacs\/public_html\/nova\/src\/PerformsValidation.php",
        "line":18,
        "function":"validate",
        "class":"Illuminate\\Validation\\Validator",
        "type":"->",
        "args":[]
    }]
}

Agency nova模型的Fields方法(表名:agency)

public function fields(Request $request)
{
    return [
        ID::make()->sortable(),

        Text::make('Name')
            ->sortable()
            ->rules('required', 'string'),

    ];
}

浏览器控制台出错

浏览器网络选项卡上的异常

【问题讨论】:

  • 能否提供代码和截图了解更多详情
  • 我添加了我的 Nova 模型的错误跟踪和字段方法。
  • 您的 Nova 资源代码看起来没问题。你能检查一下 laravel 日志文件中的异常堆栈跟踪吗?
  • 我查过了。看起来 laravel.log 中没有针对此问题的条目。我尝试更新 Nova,但这也没有任何区别。
  • 你能提供你提交的输入值吗

标签: laravel laravel-nova


【解决方案1】:

问题出在 Handler (app/Exceptions/Handler.php) 中。不确定之前的开发者是否更新了这个功能。无论如何,这个函数的问题是:

  • 验证异常返回的状态码是400,也就是422,那么只有Vue组件才会显示验证信息。
  • 此外,这里的错误被推送到“响应”数组的“验证”索引。但是 Vue 组件正在检查“响应”数组的“错误”索引。

    public function render($request, Exception $exception)
    {    
        if ($request->ajax() || $request->wantsJson()) {

            $response = ['errors' => 'Sorry, something went wrong.'];

            $status = 400;

            if ($this->isHttpException($exception)) {
                $status = $exception->getStatusCode();
            }

            if (get_class($exception) == 'Illuminate\Validation\ValidationException') {
                $response['validation'] = $exception->validator->errors();
            }

            return response()->json($response, $status);
        }

        return parent::render($request, $exception);
    }

当我更新代码以在发生验证异常时将错误代码返回为 422 并将错误推送到响应的“错误”索引而不是“验证”索引时,问题得到了解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 2020-04-28
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 2016-05-27
    • 2017-01-06
    相关资源
    最近更新 更多