2013-10-07 9 views
11

Chciałbym uzyskać wartości dla szeregu pól wyboru, które ustawiłem w formularzu Laravel 4. Oto kod w widoku konfigurowania pól wyboru:Jak uzyskać wartości dla szeregu pól wyboru w kontrolerze Laravel 4 (jeśli jest zaznaczone)

@foreach ($friends as $friend) 
<input tabindex="1" type="checkbox" name="friend[]" id="{{$friend}}" value="{{$friend}}"> 
@endforeach 

W moim kontrolera, chciałbym uzyskać wartości dla zaznaczonych pól i umieścić je w tablicy. Nie jestem do końca pewien, jak to zrobić, ale zakładam, że jest coś takiego jak:

array[]; 

foreach($friend as $x) 
if (isset(Input::get('friend')) { 
     array[] = Input::get('friend'); 

} 
endforeach 

Mógłbyś podać mi rozwiązanie to zrobić? Dziękuję Ci.

EDIT:

To jest to, co mam w kontrolerze:

public function describe_favorite() { 

      $fan = Fan::find(Auth::user()->id); 
      $fan->favorite_venue = Input::get('venue'); 
      $fan->favorite_experience = Input::get('experience'); 

      $friends_checked = Input::get('friend[]'); 

      print_r($friends_checked); 

      if(is_array($friends_checked)) 
      { 
      $fan->experience_friends = 5; 
      } 

      $fan->save(); 


      return Redirect::to('fans/home'); 

     } 

To nie przeżywa "jeśli" pętli. Jak mogę zobaczyć dane wyjściowe pliku print_r, aby zobaczyć, co zawiera zmienna $ friends_checked?

Odpowiedz

27

Jeśli pola wyboru są powiązane, należy użyć [] w atrybucie nazwy.

@foreach ($friends as $friend) 
<input tabindex="1" type="checkbox" name="friend[]" id="{{$friend}}" value="{{$friend}}"> 
@endforeach 


$friends_checked = Input::get('friend'); 
if(is_array($friends_checked)) 
{ 
    // do stuff with checked friends 
} 
+0

Spróbuj zobaczyć to, co naprawdę zawiera print_r ($ friends_checked). –

+0

Jak wydrukować tę zmienną ze sterownika, aby ją zobaczyć? – user1072337

+1

po prostu wpisz to w swoim kontrolerze: print_r ($ friends_checked); –

0

Korzystanie name = „przyjaciel []” w polu formularza tworzy tablicę o nazwie znajomego, który jest przekazywany do serwera, w przeciwieństwie do name = „przyjaciela”, który przechodzi ciąg znaków do serwera.

1

Przyjaciel tablicy musi mieć klucz. Jeśli istnieje $ friend-> id, możesz spróbować czegoś takiego.

@foreach ($friends as $friend) 
    <input tabindex="1" type="checkbox" name="friend[{{$friend->id}}]" id="{{$friend}}"> 
@endforeach 
+0

Powinna to być zaakceptowana odpowiedź, jeśli używasz pętli for w sterowniku! – viery365