Laravel Nova - 看不到验证错误消息

3
我正在使用 Nova 控制面板进行项目开发,但由于某些原因我无法看到验证错误信息。
如果存在验证错误,我可以在浏览器控制台中作为异常来查看,但是在 Nova 用户界面中却看不到。
只有当表单的所有字段都正确输入时,我才能看到成功消息。
我对 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)的Fields方法:

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

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

    ];
}

浏览器控制台上的错误:

输入图像描述

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

输入图像描述


1
请提供代码和截图以获取更多详细信息。 - Saumini Navaratnam
你的Nova资源代码看起来没问题。你能检查一下Laravel日志文件中的异常堆栈跟踪吗? - Saumini Navaratnam
你能提供你正在提交的输入值吗? - Saumini Navaratnam
我正在提交空值。我的意思是,我只是点击提交而没有输入任何内容。因此,预计在Nove UI中显示一个验证错误消息,对吗? - Vineeth Vijayan
让我们在聊天中继续这个讨论 - Vineeth Vijayan
显示剩余2条评论
1个回答

0

问题出在处理程序(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并将错误推送到响应的“errors”索引而不是“validation”索引时,问题得到了解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接