2016-03-30 15 views
0

In einer Laravel Klinge Vorlage, haben wir ein Formular mit einigen optionalen Radio-Buttons und Checkboxen, wieLaravel 5.1 Radio-Buttons und Checkboxen

<input type="checkbox" id="A" name="A">A <br /> 
<input type="checkbox" id="B" name="B">B <br /> 

und Radiobuttons

<input type="radio" id="R1" name="AINE" value="1"> Yes 
<input type="radio" id="R2" name="AINE" value="0"> No 

In Controller, in Post-Methode, wir haben

$input = Input::all(); 
DB::connection('datab1')->table('tab1')->insert(array( 
'A' => array_key_exists('A', $input) ? $input['A'] : null, 
'B' => array_key_exists('B', $input) ? $input['B'] : null, 
'AINE' => array_key_exists('AINE', $input) ? $input['AINE'] : null, 
)); 

Aber beim Abschicken des Formulars, es immer 1 in allen drei Spalten einfügen Datenbank, auch wenn KEINE der Optionsschaltfläche ausgewählt ist oder das Kontrollkästchen aktiviert ist. Kann mir bitte jemand erklären?

Antwort

0

Es sollte so etwas wie folgt gestaltet sein:

public function post(Request $request) 
{ 
    DB::connection('datab1') 
     ->table('tab1') 
     ->insert([  
      'A' => $request->has('A') ? $request->A : null, 
      'B' => $request->has('B') ? $request->B : null, 
      'AINE' => $request->has('AINE') ? $request->AINE : null, 
     ] 
    ); 
} 
1

Sie haben forexample Ihre Kontrollkästchen oder Optionsfelder in Array-Modus einzustellen:

<input type="checkbox" id="A" name="A[]">A <br /> 

und foreach Ihr Array in Ihrem Controller wie folgt :

foreach(Input::get('A') as $name) 
{ 
    $model=new yourModelName; 
    $model->yourRowName=$name; 
    $model->save(); 
    return->redirect()->back(); 
} 

Und es ist fertig.