【问题标题】:Laravel - How does a FormRequest differ from a Request?Laravel - FormRequest 与 Request 有何不同?
【发布时间】:2018-07-05 06:19:31
【问题描述】:

使用 FormRequest 时,某些字段不会发送。在一个项目中,我不得不对可能无限的输入数组使用一些自定义验证:

<input type="file" name="image[1]" />
<input type="file" name="image[2]" />

等等……

为了验证这些,我创建了一个名为 StoreProject 的 FormRequest:

public function rules()
{

    $rules = [

        'title' => 'required',

    ];

    foreach( $this->request->get( 'image' ) as $key => $val )
    {

        $rules['image.'.$key] = 'image';

    }

    return $rules;

}

在我的控制器函数中,我注意到通过请求发送的内容有所不同。

如果我的控制器看起来像这样:

public function store(StoreProject $request)
{

    dd( $request->all() );

}

请求中不包含我的数组输入。而如果我像这样使用标准请求。

public function store(Request $request)
{

    dd( $request->all() );

}

我的数组输入看起来不错。

有人知道为什么会这样吗?或者如何在使用自定义验证的同时访问这些图像?

【问题讨论】:

    标签: laravel validation laravel-5 request


    【解决方案1】:

    您可以使用* 运算符验证数组:

    public function rules()
    {    
        return [    
            'title' => 'required',
            'image.*' => 'image',
        ];
    
    }
    

    【讨论】:

      【解决方案2】:

      https://laravel.com/docs/5.5/requests#retrieving-uploaded-files

      $request-&gt;all() 不包含上传的文件输入。您必须使用: $request-&gt;file('image') 方法或$request-&gt;image 动态属性。

      【讨论】:

        猜你喜欢
        • 2019-08-26
        • 1970-01-01
        • 1970-01-01
        • 2017-09-03
        • 2019-03-04
        • 2023-03-27
        • 2016-08-26
        • 2020-06-25
        • 2015-04-17
        相关资源
        最近更新 更多