Laravel - FormRequest与请求有何不同?

时间:2018-01-25 21:44:10

标签: laravel validation laravel-5 request

使用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() );

}

我的数组输入显示正常。

有谁知道为什么会这样?或者我仍然可以在使用自定义验证的同时访问这些图像?

2 个答案:

答案 0 :(得分:0)

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

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

}

答案 1 :(得分:0)

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

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