2016-04-28 2 views
1

Hy снова. Я пытаюсь обновить свою форму, с несколькими загрузками. Это работает. Но всякий раз, когда я пытался пустой форму файлов, он всегда появляется:Laravel 5.2 Как я могу обновить форму при условии, что формы файлов пустые?

ErrorException в строке 160 ProductController.php: Undefined смещение: 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> 

Спасибо, иметь хороший день !

+0

Если вы запутались в вопросе (извините я плохо, когда что-то объяснить хе-хе), основные вопросы : Как я могу обновить без заполнения формы файлов и без обновления изображений. –

ответ

2

Проблема заключается в том, что когда ваш массив images пуст, вы не можете получить доступ к индексу [0]. Однако это усугубляется тем фактом, что ваше условное значение всегда верно. Условный оператор вы использовали недостаточно здесь:

isset($images); 

Это потому, что вы ранее declared изображения.

$images = []; 

Таким образом, вместо того, что вы хотите, чтобы проверить count массива изображений. Мы можем сделать это так:

count($images) > 0 

Таким образом, окончательный условный будет:

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

Я скопировал условное, но показал ошибку 'Косвенная модификация перегруженного элемента App \ Product не имеет никакого эффекта'. –

+0

Я отредактировал '$ images = [];' to '$ images = array (0, 1, 2, 3);' и пробовал ваш код тоже, теперь это работает. Спасибо! –

+0

Я имею в виду $ images = array (0, 1, 2, 3) –

Смежные вопросы