Lets say I have the following Custom Request:

class PlanRequest extends FormRequest
{
    // ...


    public function rules()
    {

        return
        [
            'name'              => 'required|string|min:3|max:191',
            'monthly_fee'       => 'required|numeric|min:0',
            'transaction_fee'   => 'required|numeric|min:0',
            'processing_fee'    => 'required|numeric|min:0|max:100',
            'annual_fee'        => 'required|numeric|min:0',
            'setup_fee'         => 'required|numeric|min:0',
            'organization_id'   => 'exists:organizations,id',
        ];
    }
}

当我从控制器访问它时,如果我访问$request->all(),它会给我ALL数据,包括不打算传递的额外垃圾数据.

public function store(PlanRequest $request)
{
    dd($request->all());
    // This returns
    [
        'name'              => 'value',
        'monthly_fee'       => '1.23',
        'transaction_fee'   => '1.23',
        'processing_fee'    => '1.23',
        'annual_fee'        => '1.23',
        'setup_fee'         => '1.23',
        'organization_id'   => null,
        'foo'               => 'bar', // This is not supposed to show up
    ];
}

如何在不手动执行$request->only('name','monthly_fee', etc...)的情况下获得ONLY验证数据?

推荐答案

$request->validated() will return only the validated data.

Example:

public function store(Request $request)
{
    $request->validate([
        'title' => 'required|unique:posts|max:255',
        'body' => 'required',
    ]);

    $validatedData = $request->validated();

}

替代解决方案:

如果验证通过,$request->validate([rules...])将返回唯一的验证数据.

Example:

public function store(Request $request)
{
   
    $validatedData = $request->validate([
        'title' => 'required|unique:posts|max:255',
        'body' => 'required',
    ]);

}

Laravel相关问答推荐

Nuxt 3获取多部分表单数据上传不起作用

为什么Laravel在API请求时返回BadMethodCallException?

未定义防护 [api] 的授权驱动程序 [api]

如何使用动态翻译键翻译 Laravel硬编码字符串(还有 1 个错误)..(验证异常类)

laravel 如何验证跨越午夜的两个值之间的时间(15:00 > 时间 > 01:00)

如何在 Laravel 中使用内存数据库的完整测试套件之前迁移和 seeder ?

从 Laravel Session 数组中删除项目

合并和排序两个 Eloquent 集合?

无法安装 Laravel 包 - 干预图像

在 laravel 5.2 中禁用特定路由的 Web 中间件

laravel 5 中的登录事件处理

Laravel vagrant up 不工作 - Errno::EADDRNOTAVAIL

如何从 laravel 中的现有数据库创建迁移

Laravel 初学者的良好开端

Laravel 说 Auth guard [] 没有定义

将图标添加到 Laravelcollective 提交按钮

Laravel 存储文件的公共 url

无法捕获 Carbon 抛出的异常

Laravel 手动登录功能

Laravel 将附加参数传递给函数