2017-09-08 1 views
1

Laravel 5.5 Laravelcollective zeigt 5.4Form Modell in Laravelcollective Bindung, ein standardmäßig aktiviert Checkbox nie unkontrolliert

Auf meiner Seite bearbeitet das Kontrollkästchen immer geprüft angezeigt wird, unabhängig von Zustand in der Datenbank. (Ich habe bestätigt, dass es wie geplant funktioniert, ohne dass die Standardeinstellung aktiviert ist.)

Ich verwende die gleichen Formularfelder für meine Erstellungsroute und möchte, dass der Standard überprüft wird.

{{ Form::model($client, ['route' => ['clients.update', $client->id], 'method' => 'patch']) }} 
{{ Form::checkbox('active', 'Yes', true) }} 
{{ Form::close() }} 

Antwort

1

Nach dem documentation on form model binding

So sieht die Priorität wie folgt aus:

  1. Session Flash-Daten (Old Input)
  2. Explizit gebene Wert
  3. Modell Attribut Daten

Beachten Sie, dass der explizit übergebene Wert kein Standard-Fallback zu sein scheint, sondern der tatsächliche Wert, der verwendet wird (unabhängig vom Modell). Daher scheint dies das beabsichtigte Verhalten zu sein.

Update: Wie in den Kommentaren diskutiert, eine Lösung Fehlerwert in dem Fall zu ermöglichen, wo es kein Modell-Set verwenden:

{{ Form::checkbox('active', 'Yes', isset($client)?null:true) }} 
+0

Jede Abhilfe, die diese außer Kraft setzen kann? –

+0

@MikeThrussell Nun, das Problem ist, dass Sie versuchen, das 'Form :: -Modell 'sowohl in Fällen zu verwenden, in denen Sie ein Modell haben, als auch in Fällen, in denen Sie dies nicht tun (was nicht beabsichtigt ist). Sie könnten etwas wie 'Form :: checkbox ('active', 'Ja', $ client! == null? Null: true)' oder etwas in der Art tun, dass – apokryfos

+0

Hatte mit '{{Form :: checkbox (' active ',' Ja ', isset ($ client)? null: true)}} 'da keine' $ client'-Variable im create-Formular gesetzt ist. –

Verwandte Themen