我在Laravel中通过创建自己的UserStoreRequest类来实现表单验证,该类扩展了FormRequest类.我在用Ajax.顺便说一句,每当验证失败时,Laravel会自动创建一个JSON响应并将其发送到浏览器,包括验证错误.问题是我需要帮助来拦截它.我读过文档,它说每当它遇到错误时,Laravel就会抛出这个异常:

照明\验证\验证异常.

我的问题是如何拦截Laravel自动生成的JSON响应,并以我自己的方式将内容放入其中.有出路吗?我能做点什么吗?

推荐答案

您可以通过重写UserStoreRequest类中的failedValidation方法来自定义错误响应.验证失败时调用此方法.默认情况下,它会抛出一个ValidationException来生成您看到的JSON响应.

namespace App\Http\Requests;

use Illuminate\Contracts\Validation\Validator;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;

class UserStoreRequest extends FormRequest
{
    // ...

    protected function failedValidation(Validator $validator)
    {
        $response = response()->json([
            'data' => $validator->errors(),
            'custom_message' => 'Your custom message here',
            // Add more data if needed
        ], 422);

        throw new HttpResponseException($response);
    }
}

在本例中,当验证失败时,使用自定义JSON响应引发HttpResponseException.422状态码通常用于验证错误.请随时根据需要定制响应.

Php相关问答推荐

如何在WordPress中为特定自定义帖子类型自定义URL struct

WooCommerce基于元数据的自定义范围目录排序

无法在Laravel/Vue停靠容器中启动MySQL

RediSearch PHP希望我在每次使用时定义所有字段

根据未用于变体的产品属性隐藏WooCommerce发货方式

PHP -多维数组到一维数组

Mod_重写子目录中相应的php文件

如何使用php一次更新两个数据库中的MySQL表

在WooCommerce中只允许高价产品的BACS付款

在WooCommerce管理中为订单项目添加自定义字段价格值

未定义的类型';PDF';在Laravel 8

如何在codeigniter中将order_by RAND与下面的代码一起使用

使用 php Carbon 获取两个日期之间的随机日期和时间

循环中未序列化数组显示的问题

根据页面的最后修订日期设置 MediaWiki 内部链接的样式

CodeIgniter 4中嵌套过滤器组不起作用

为什么 ECDSA 384 签名验证在 GO 中失败,但在 PHP 中却没有?

按数字然后按字符串对关联 PHP 数组进行排序

Eloquent 的模型更新了它应该 laravel php 的更多行

升级到 PHP 8.2:ksort 和 krsort 更改