Laravel 5.2如何在条件下更新表单文件表单是空白的?

时间:2016-04-28 04:24:34

标签: php forms function laravel laravel-5.2

Hy再次。我试图通过多次上传来更新我的表单。它的工作。但是,每当我试图删除文件格式时,它总是出现:

  

ProductController.php第160行中的ErrorException:未定义的偏移量:0

好的,现在我有两个(或三个)选项:

  1. 使表单和多个上传分开,因此控制器功能也是分开的。
  2. 编辑了我的代码,但我不知道我应该编辑的位置。
  3. 建议我,一切都会有所帮助。
  4. 这是我的代码(工作得很好,除非我没有填写文件表格):

    public function update(Request $request, $id)
    {
        $update = $request->all();
        //dd($update);
        $product = Product::find($id);
    
        $picture = ''; 
        $images = [];
        if ($request->hasFile('images')) {
          $files = $request->file('images');
          //dd($files);
    
        foreach($files as $file){
            if (isset($file)){
            $filename = $file->getClientOriginalName();
            $extension = $file->getClientOriginalExtension();
            $picture = date('His').$filename;
            $destinationPath = base_path() . '\public\images/';
            $file->move($destinationPath, $picture);
            array_push($images, $picture);
        }
        }
        //dd($update);
        //dd($images);
        }
    
         if (!empty($update['images']) && isset($images)) {
            $update['images'] = $images[0];
            $update['images2'] = $images[1];
            $update['images3'] = $images[2];
            $update['images4'] = $images[3];
            } else {
            unset($product['images'] -> $images);
            }
        //dd($update);
        $product->update($update); 
        return redirect('product');
    }
    

    形式:

    <div class="form-group">
        {!! Form::label('Images', 'Images:') !!}
        {!! Form::file('images[]',null,['class'=>'form-control']) !!}
    </div>
    

    谢谢你,祝你有愉快的一天!

1 个答案:

答案 0 :(得分:2)

此处的问题是,当您的images数组为空时,您无法访问[0]索引。但是,条件始终为真,这一点更加复杂。您使用的条件声明不足:

isset($images);

这是因为之前您有declared张图片。

$images = [];

所以你想要的是检查images数组的count。我们可以这样做:

count($images) > 0

所以最后的条件是:

if (!empty($update['images']) && count($images) > 0) {