【问题标题】:Laravel 5.2 How I Can Update Form in Condition The Files Forms is Blank?Laravel 5.2 如何在文件表单为空白的情况下更新表单?
【发布时间】:2016-04-28 04:24:33
【问题描述】:

又来了。我正在尝试通过多次上传来更新我的表单。这是工作。但是,每当我尝试清空文件表单时,它总是会出现:

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

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

  1. 将表单和多次上传分开,所以控制器功能也分开了。
  2. 编辑了我的代码,但我不知道应该在哪里编辑。
  3. 建议我,任何事情都会有所帮助。

这是我的代码(运行良好,除非我没有填写文件表格):

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>

谢谢你,祝你有美好的一天!

【问题讨论】:

  • 如果您对这个问题感到困惑(抱歉,我解释的时候很糟糕,呵呵),主要问题是:如何在不填写文件表格和不更新图像的情况下进行更新。

标签: php forms function laravel laravel-5.2


【解决方案1】:

这里的问题是当您的images 数组为空时,您无法访问[0] 索引。但是,您的条件始终为真这一事实使情况更加复杂。您在这里使用的条件语句是不充分的:

isset($images);

这是因为你以前declared 图像。

$images = [];

因此,您想要的是检查图像数组的count。我们可以这样做:

count($images) > 0

所以最后的条件是:

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

【讨论】:

  • 我复制了条件但它显示错误Indirect modification of overloaded element of App\Product has no effect。
  • 我将$images = []; 编辑为$images = array(0, 1, 2, 3); 并尝试了您的代码,现在可以使用了。谢谢!
  • 我的意思是 $images = array(0, 1, 2, 3)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-17
  • 2017-02-24
  • 2019-12-21
  • 2016-05-29
  • 2016-10-20
  • 2019-12-01
相关资源
最近更新 更多