2017-04-06 28 views
0

動的に作成されたフォームからチェックボックスの名前を取得する方法を知りたい。まず、データの各レコードを別々の形式で表示しています。レコードを削除する必要がある場合、削除することができます。私はsomename + idと別の名前を付けることができます。しかし、どの名前がコントローラーに入っているのか、私はどのように知っていますか?コントローラーでどの名前が使用されているかわからないため、レコードを削除できません。私はlaravel 5.4でやっています。ここに私のコードです -動的に作成されたフォームを処理する方法laravel 5.4

@if (isset($allcolors)) 
    @foreach ($allcolors as $color) 
     <tr> 
      <form method="post" action="/delete"> 
       {{csrf_field()}} 
       <input type="hidden" name="_method" value="DELETE"> 
       <td> 
        <span class=""><input type="checkbox" name="deletecolor[{{$color->id}}]" value="{{$color->id}}"></span> 
       </td> 
       <td> 
        <div style="background:{{$color->web_color}}">a</div> 
       </td> 
       <td>{{$color->color_name}}</td> 
       <td> 
        <button type="submit" class="btn btn-danger"> 
         Delete 
        </button> 
       </td> 
      </form> 
     </tr> 
    @endforeach 
@endif 

は、私はこのようにやっている取得したいフォームの送信に -

public function destroy(Request $request) 
{ 
    // 
    $id = $request->input('deletecolor'); 
    $affected = DB::update("DELETE FROM vehicle_color where id = ?", [$id]); 
    //echo $affected==1?"Successfully Deleted":"Delete Fail"; 


} 
+0

あなたのフォームに1つでもないと思われる場合、リクエストから 'name'入力をどのように取得していますか?' deletecolor [] 'だけですか? –

+0

私は$ i = 1のような変数を取っています。そして、私はインクリメントして名前をチェックボックスに代入していますが、問題は私がIDが行くフォームを提出した時点ではわかりません。 –

答えて

1

私はあなたが$color->idを持っている参照してください。なぜそれに基づいてそれらを削除しないのですか?

@if (isset($allcolors)) 
    @foreach ($allcolors as $color) 
     <tr> 
      <form method="post" action="/delete"> 
      {{csrf_field()}} 
      <input type="hidden" name="_method" value="DELETE"> 
      <td><span class=""><input type="checkbox" name="deletecolor[{{ $color->id }}]" value="{{$color->id}}"></span></td> 
      <td><div style="background:{{$color->web_color}}">a</div></td> 
      <td>{{$color->color_name}}</td> 
      <td><button type="submit" class="btn btn-danger" data-toggle="modal" data-target="#colorDelPopup">Delete</button></td> 
      </form> 
     </tr> 
    @endforeach 
@endif 

そして、あなたのコントローラで

public function destroy(Request $request) 
{ 
    $ids = $request->input('deletecolor'); 
    // Instead of raw SQL, you can use the query builder to make your life a bit easier 
    $affected = DB::table('vehicle_color')->whereIn('id', $ids)->delete(); 
    //echo $affected==1?"Successfully Deleted":"Delete Fail"; 
} 

これはトリックを行う必要があります。

+0

お返事ありがとうございました。しかし、$ request-> input( 'deletecolor')はコントローラで常に空になっています –

+0

ありがとうございました。 –

関連する問題