2014-11-17 21 views
10

voglio impostare le caselle di controllo dello stato dal database, in modo che io scrivo,laravel casella di controllo lama

{{ Form::checkbox('asap',null,$offer->asap) }} 

Ma se voglio impostare id al check-box come

{{ Form::checkbox('asap',null,$offer->ASAP, array('id'=>'asap')) }} 

E ' imposta sempre lo stato della casella di controllo su true. (prima che l'utente lo selezioni)

Quindi domanda come impostare l'id nelle caselle di controllo del blade quando, lo stato della casella di controllo è impostato prima che l'utente lo selezioni?

risposta

5

Il terzo argomento decide se la casella di controllo è selezionata o meno. Quindi probabilmente $offer->ASAP (o $offer->asap è vero (o non falso o non nullo). Se si desidera rendere deselezionata la casella di spunta o impostarlo su falso, o non utilizzare 3o argomento (impostato su null o falso):

{{ Form::checkbox('asap',null,null, array('id'=>'asap')) }} 

EDIT

Un'altra possibilità è che avete sulla vostra pagina di un codice JavaScript personalizzato che trova elemento da asap id e controlla questa casella. Così, quando non si imposta id, JavaScript non può controllare, ma quando si imposta questo ID, la casella di controllo verrà controllata da JavaScript

+0

$ SPECIALE-> ASAP prendere valore dal database ed è 0 (FALSO) , quindi se ho scritto {{Form :: checkbox ('asap', null, $ offer-> asap)}} tutto funziona bene, ma se voglio ad alcuni id va sempre TRUE – lggg3

+0

@ lggg3 Sei sicuro? Hai qualche JavaScript nella tua pagina? È possibile che JavaScript trovi l'elemento con l'ID 'asap' (se si dispone di tale script) e lo controlla (ovviamente a prescindere da ciò che si è passato in Laravel) –

+1

È stato scritto ho trovato JavaScript nel codice che imposta sempre le caselle come true – lggg3

1

in FormBuilder.php

public function checkbox($name, $value = 1, $checked = null, $options = array()) 
{ 
    return $this->checkable('checkbox', $name, $value, $checked, $options); 
} 
  • 1 ° param: Nome
  • 2 °: valore
  • 3 °: selezionata o meno (vale a dire null, false o true)
  • 4: attributi.

{{ Form::checkbox('asap',null,$offer->ASAP, array('id'=>'asap')) }}

vostro ordine è sbagliato.

dovrebbe essere,

{{ Form::checkbox('asap',$offer->ASAP, null, array('id'=>'asap')) }} 
+0

Sbagliato, l'ordine è sbagliato. Guarda il tuo post – lggg3

+0

puoi dire l'errore sopra? – itachi

+0

Scrivi che dovrebbe essere {{Form :: checkbox ('asap', $ offer-> ASAP, null, array ('id' => 'asap'))}} ma in realtà dovrebbe essere {{Form :: checkbox ('asap', null, $ offer-> ASAP, array ('id' => 'asap'))}} trova l'errore in cui nel codice trovo javascript che controlla sempre la casella – lggg3

17

So che questa domanda è stato risposto in precedenza, in questo ho intenzione di spiegare passo per passo come implementare caselle con laravel/lama con diversi casi ...

Quindi, al fine di caricare le vostre caselle di controllo dal database o per verificare se una casella è selezionata:

Prima di tutto è necessario capire come funziona, come @itachi menzionato:

{{Modulo :: casella di controllo (primo argomento, secondo argomento, terzo argomento, 4 ° argomento)}}

  • Primo argomento: nome
  • Secondo argomento: valore
  • Terzo argomento: registrato o non selezionato questo richiede: vero o falsa
  • quarto argomento: attributi aggiuntivi (ad esempio, checkbox css classe)

Esempio:

{{ Form::checkbox('admin') }} 
//will produces the following HTML 
<input name="admin" type="checkbox" value="1"> 

{{ Form::checkbox('admin', 'yes', true) }} 
//will produces the following HTML 
<input checked="checked" name="admin" type="checkbox" value="yes"> 

Come ottenere i valori delle caselle di controllo? (nel controller)

Methode 1:

public function store(UserCreateRequest $request) 
{ 

    $my_checkbox_value = $request['admin']; 

    if($my_checkbox_value === 'yes') 
    //checked 
    else 
    //unchecked 
    ... 
} 

Metodo 2:

if (Input::get('admin') === 'yes') { 
    // checked 
} else { 
    // unchecked 
} 

Nota: è necessario assegnare un valore predefinito per la casella non selezionata:

if(!$request->has('admin')) 
{ 
    $request->merge(['admin' => 0]); 
} 

questo è bello vero? ma come possiamo impostare le caselle spuntate nella nostra vista?

per le buone pratiche Io suggerisco di usare Form::model quando si crea il modulo questa volontà valori di input di riempimento automatico che hanno gli stessi nomi come il modello (oltre che con diverse lame Modulo :: ingressi ..)

{!! Form::model($user, ['route' => ['user.update', $user->id], 'method' => 'put' ]) !!} 
    {!! Form::checkbox('admin', 1, null) !!} 
{!! Form::close() !!} 

è anche possibile ottenere in questo modo:

{{ Form::checkbox('admin',null, $user->admin) }} 

Okey ora come affrontare:

  • multipli caselle
  • Aggiungi css classe
  • Add casella id
  • aggiungere l'etichetta

diciamo che vogliamo ottenere giorni lavorativi dal nostro database Working days

$working_days = array(0 => 'Mon', 1 => 'Tue', 2 => 'Wed', 
         3 => 'Thu', 4 => 'Fri', 5 => 'Sat', 6 => 'Sun'); 

@foreach ($working_days as $i => $working_day) 
{!! Form::checkbox('working_days[]', 
        $working_day, 
        !in_array($working_days[$i],$saved_working_days), 
        ['class' => 'md-check', 'id' => $working_day] 
       ) !!} 
{!! Form::label($working_day, $working_day) !!} 
@endforeach 
//$saved_working_days is an array of days (have 7 days, checked & unchecked) 

Ho passato del tempo prima di capire come trattare con più caselle di controllo I spero che questo possa aiutare qualcuno :)

+0

Un altro suggerimento è usare '$ request-> unire (['admin' => $ this-> input ('admin', 0)]);' e possiamo rimuovere 'if (! $ Request-> ha ('admin ')) '. –

0

Buona fortuna!

File: edit.blade.php

<div class="togglebutton"> 
     <label> 
     @if ($programmer->play === 'on') 
      <input type="checkbox" name="play" checked=""> 
     @else 
      <input type="checkbox" name="play" > 
     @endif 
      Play 
     </label>   
</div> 

File: ProgrammerController.php

$play = $request->input('play'); 
if ($play === null) { 
    $programmer->play = 'of'; 
} else { 
    $programmer->play = 'on'; 
} 

Documentation Laravel 5.5

+0

Se si desidera verificare se la casella di controllo è attiva nel file create.blade.php, segue il codice.

Problemi correlati