2016-04-28 12 views
1

Hy。私は複数のアップロードで私のフォームを更新しようとしています。それは仕事です。私は空白にしようとした時はいつでもファイルを形成する。しかし、それは常に表示されています:ProductController.phpライン160でLaravel 5.2条件でフォームを更新する方法ファイルフォームが空白ですか?

ErrorException:不定オフセット:0

さて、今私は2つ(または3つ)のオプションがあります:

  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 = [];'を '$ images = array(0、1、2、3);'に編集し、あなたのコードも試してみました。ありがとうございました! –

+0

私は$ images = array(0,1,2,3)を意味します。 –

関連する問題