【问题标题】:Laravel Validation - Exception: "Given Data was Invalid"Laravel 验证 - 例外:“给定数据无效”
【发布时间】:2020-07-01 02:17:00
【问题描述】:

我有一个简单的控制器,Laravel 5.5,有一些基本的验证,但是当我输入无效数据时,我提交表单并得到一个“ValidationException: The given data was invalid”。

该框架应该将我重定向到带有错误消息的表单,但我最终出现在大红色异常页面上。

为什么会这样?

/**
 * Store blog comment
 */
public function store(Request $request)
{
    try {
        $blogPost = BlogPost::where('id', '=', $request->blog_post_id)->get()->first();
        if (!$blogPost) {
            abort(404);
        }

        $validatedData = $this->validate($request, [
            'blog_post_id' => 'required|numeric',
            'blog_comment' => 'required|min:3',
            'blog_comment_name' => 'required|min:3',
            'blog_comment_company' => 'nullable'
        ]);

这是将我送回异常页面的控制器。

【问题讨论】:

  • 为了我们帮助你,把你的表单数据或者json数据贴在请求和异常有的验证数据上。如果异常不是重定向等,您需要检查处理程序中发生的情况。同时,您的尝试应该会发现,在我们提供帮助之前需要更多详细信息:)
  • 搜索你的错误消息会发现一些线索,即那个异常和消息是 Laravel 的默认验证所做的,但它会被自动捕获并按我们预期的方式处理。 This question 进一步表明,在该问题中,您自己的异常处理很可能会干扰 Laravel 的标准行为。将验证从尝试/捕获中移出。

标签: laravel validation laravel-5


【解决方案1】:

我面临的问题是因为自定义异常处理程序没有做它应该做的事情。

默认情况下,Laravel 不会将验证异常报告为异常。如果 ValidationException 不在 dontReport 列表中,验证错误会导致应用抛出异常。

/**
 * A list of the exception types that are not reported.
 *
 * @var array
 */
protected $dontReport = [
    AuthorizationException::class,
    HttpException::class,
    ModelNotFoundException::class,
    ValidationException::class,
];

【讨论】:

    猜你喜欢
    • 2019-08-08
    • 1970-01-01
    • 2020-04-16
    • 2019-09-19
    • 2021-07-13
    • 2019-05-21
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    相关资源
    最近更新 更多