2016-04-26 9 views
0

Ich versuche das Tabellenfeld mit mehreren Bildern zu aktualisieren. Die Create Form funktioniert gut, aber das Problem ist, wenn ich versuche, es zu aktualisieren.Laravel 5.2 - Mehrere Bilder können nicht aktualisiert werden, Undefinierter Offset: 0

Also hier die Steuerung der Update-Funktion:

public function update(Request $request, $id) 
{ 
    $update = new Product($request->all()); 
    $product=Product::find($id); 

    $picture = ''; 
    $images = []; 
    if ($request->hasFile('images')) { 
    $files = $request->file('images'); 
    foreach($files as $file){ 
    $filename = $file->getClientOriginalName(); 
    $extension = $file->getClientOriginalExtension(); 
    $picture = date('His').$filename; 
    $destinationPath = base_path() . '\public\images/'; 
    $file->move($destinationPath, $picture); 
    $images[]=$picture; 
    } 
    } 

    if (!empty($product['images'])) { 
    $product['images'] = $images[0]; 
    $product['images2'] = $images[1]; 
    $product['images3'] = $images[2]; 
    $product['images4'] = $images[3]; 
    } else { 
    unset($product['images']); 
    } 

    $product->update($update); 
    return redirect('product'); 
} 

Wenn es nicht klar genug ist, können Sie die volle Product auf codeshare.io

Und das Update-Formular codeshare.io ist zu sehen Wie Sie sehen können, Ich benutze Array, um das Bild in die Datenbank einzufügen und das Array wurde definiert auf $product['images4'] = $images[3];

Hier wurde das Bild platziert. This is where the picture was placed.

Aber es gab mir Fehler:

ErrorException in ProductController.php line 149: Undefined offset: 0 

Können Sie eine bessere Code vorschlagen oder mich über den Fehler erklären? Vielen Dank;) Einen schönen Tag noch.

Antwort

3

Die undefined Offset entsteht, wenn Sie den Index ein Bild zuzugreifen versuchen, die nicht hochgeladen.

To fix this problem, you should modify your code like this -

public function update(Request $request, $id) 
{ 
    $update = $request->all(); 
    $product = Product::find($id); 

    $picture = ''; 
    $images = []; 
    if ($request->hasFile('images')) { 
     $files = $request->file('images'); 
     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); 
     } 
     } 
    } 

    if (!empty($product['images']) && isset($images[0])) { 
     $update['images'] = $images[0]; 
    } 
    if (!empty($product['images2']) && isset($images[1])) { 
     $update['images2'] = $images[1]; 
    } 
    if (!empty($product['images3']) && isset($images[2])) { 
     $update['images3'] = $images[2]; 
    } 
    if (!empty($product['images4']) && isset($images[3])) { 
     $update['images4'] = $images[3]; 
    } 
    unset($update['images']); 
    $product->update($update); 
    return redirect('product'); 
} 
+0

Hallo, es ist mir' preg_replace(): Parameter stimmen nicht überein, Muster ist eine Zeichenkette, während der Ersatz ein Array ist –

+0

@PutriDewiPurnamasari welche Zeile? Versuchen Sie, den gesamten Code zu kopieren und einzufügen (ich habe gemacht und bearbeitet) – atefth

+0

ErrorException in helpers.php Zeile 740: –

0

Verwendung print_r($image); exit; nach foreach schließen und überprüft Array mit kay und Wert und ordnet es

+0

Es gab mir 'Array ([0] => 4)' ' –

+0

print_r ($ image); exit; 'schreibe draußen für jede – abhayendra