2013-10-07 14 views
11

Vorrei ottenere i valori per una serie di checkbox che ho impostato in un form di Laravel 4. Ecco il codice nella visualizzazione impostazione le caselle:Come ottenere i valori per una serie di check nel controller di Laravel 4 (se selezionato)

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

Nel mio controller, vorrei ottenere i valori per le caselle selezionate e metterli in un array. Io non sono esattamente sicuro di come fare questo, ma suppongo che sia qualcosa di simile:

array[]; 

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

} 
endforeach 

Mi può fornire una soluzione per fare questo? Grazie.

EDIT:

Questo è quello che ho nel controller:

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'); 

     } 

Non sta attraversando il "se" loop. Come vedo l'output di print_r per vedere cosa c'è nella variabile $ friends_checked?

risposta

27

Se le caselle di controllo sono correlate, è necessario utilizzare [] nell'attributo del nome.

@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

Prova a vedere print_r ($ friends_checked) cosa contiene realmente. –

+0

Come posso stampare questa variabile dal controller in modo che possa vederlo? – user1072337

+1

digitalo nel tuo controller: print_r ($ friends_checked); –

0

Utilizzando name = "amico []" nel campo del modulo crea un array di nome amico che viene passato al server, al contrario di name = "amico", che passa un valore stringa al server.

1

L'array friend deve avere una chiave. Se c'è $ friend-> id puoi provare qualcosa di simile.

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

Questa dovrebbe essere la risposta accettata se si utilizza un ciclo for nel controller! – viery365

Problemi correlati