2016-02-24 7 views
6

Hier ist meine wählen Sie die OptionAlter Wert in mehrere Auswahloption in Laravel Klinge

<select name="recomemded_food[]" value="" style="width:560px;" multiple class="chosen-select" > 
<option value="American Black Bear">American Black Bear</option> 
<option value="Asiatic Black Bear">Asiatic Black Bear</option> 
<option value="Brown Bear">Brown Bear</option> 
<option value="Giant Panda">Giant Panda</option> 
</select> 

Und unter meinem Code versucht, die foreach-Schleife zu verwenden, um den Array-Wert zu erhalten. aber ich erhalte den folgenden Fehler:

@foreach (explode(',',old('recomemded_food')) as $recomemded_food) 
{{$recomemded_food}} 
@endforeach 

Fehlermeldung: explode() erwartet Parameter 2 String sein

+0

'alt ('recomedded_food')' ist ein Array in Ihrem Fall. –

+0

Was möchten Sie erreichen? –

+0

der ausgewählte Wert –

Antwort

6

Wenn Sie passieren die ausgewählten Werte von Controller:

$recommended_foods = ["American Black Bear", 
         "Asiatic Black Bear", 
         "Brown Bear", 
         "Giant Panda"]; 

und in der Ausblick:

<select required="required" class="form-control" name="recommended_food"> 
    @foreach ($recommended_foods as $key => $food) 
     <option value="{{ $food}}" {{ (old("recommended_food") == $food ? "selected":"") }}>{{ $food }}</option> 
    @endforeach 
</select> 
+0

Wenn der Benutzer das Formular abschickt, hat der Benutzer möglicherweise vergessen, ein anderes Formular auszufüllen und eine Fehlermeldung zu öffnen. Wird der alte Wert angezeigt? –

+0

Ja, es wird da sein. –

+0

Danke, ich werde es versuchen. –

4

für mich Jilson Thomas Antwort hat nicht funktioniert für mehrere wählen so habe ich es zu:

{{ in_array($food, old("recommended_food")) ? "selected":"") }} 
9

Nach dem Spielen ein wenig herum kam ich mit diesem und es scheint nur vortrefflich

<select name="options[]" id="options" class="form-control" multiple> 
    @foreach($settings->includes->get('optionList') as $option) 
     <option value="{{ $option->id }}" {{ (collect(old('options'))->contains($option->id)) ? 'selected':'' }}>{{ $option->name }}</option> 
    @endforeach 
</select> 

zu arbeiten ich in Nutzung 100% falsch sein kann die Funktion sammeln, aber es funktioniert gut bei vielen meiner Tests. Ich möchte mich bei MPS bedanken, da es Ihr Beispiel war, das mich dazu gebracht hat dies zu versuchen, denn wenn in "recommended_food" keine Daten vorhanden sind, werden Sie einen Fehler machen, weil in_array ein Array benötigt und nicht gut mit Null funktioniert mit der Idee, so etwas zu tun.

@if (old("options")){{ (in_array($option->id, old("options")) ? "selected":"") }}@endif 

inline aber der Mensch, der ich bin mit den folgenden anstelle

{{ (collect(old('options'))->contains($option->id)) ? 'selected':'' }} 

hoffe, das hilft anderen mir so lange Geschichte kurz zu hässlich aussieht !!

0

Das ist die Art, wie ich es tue, sehr dynamisch.

<select id="gender" name="gender"> 
    <option>Select</option> 
     <option value="M">Male</option> 
     <option value="F">Female</option> 
</select> 

<script> 
    var currentGender = null; 
    for(var i=0; i!=document.querySelector("#gender").querySelectorAll("option").length; i++) 
    { 
     currentGender = document.querySelector("#gender").querySelectorAll("option")[i]; 
     if(currentGender.getAttribute("value") == "{{ old("gender") }}") 
     { 
      currentGender.setAttribute("selected","selected"); 
     } 
    } 
</script> 
1

Die Frage wurde für mehrere gewählt.

Angenommen, Sie ein Feld namens Bezeichnung haben, und Sie müssen für das Hinzufügen von 1 Datensatz mehrere Bezeichnung wählen und den Feldnamen wird forWhom

Während hinzufügen

Sie benötigen diese hinzufügen {{collect (alt ('forWhom')) -> enthält ($ key))?'Ausgewählt': ''}} Frieden von Code in Ihre Option Tag

die wie

<select id="forWhom" name="forWhom[]" multiple class="form-control chosen"> 
    <option value="">--- Select ---</option> 
    @foreach ($desgInfo as $key => $value) 
     <option value="{{ $key }}" 
      {{ (collect(old('forWhom'))->contains($key)) ? 'selected':'' }} /> 
      {{ $value }} 
     </option> 
    @endforeach 
</select> 

Während Bearbeiten

schauen Sie benötigen

{{ (collect(old('forWhom'))->contains($key)) ? 'selected':'' }} 

{{ (in_array($key,$info->forWhom)) ? 'selected' : ''}} 

hinzufügen die wie folgt aussehen wird

Select all selected id's in a multiselect dropdown in laravel 5.4 with harvest chosen

Dank

0

I JSON Daten wurden Parsen und wurde mit repopulating die Multi-Select als array konfrontiert, und wollte nur einen Tisch, und war nicht keys verwenden, da diese array sein wurde von der show Methode in der controller zurückgegeben, so musste die Werte direkt auf der Vorlage liefern, in meinem Fall als Crud-Ressource auf der edit.blade.php Vorlage (auch auf der create Vorlage).

Das funktionierte für mich, und war das sauberste ich konnte es auf die Aussicht bekommen.

<select id="recommended_food" multiple="multiple" size=3 style='height: 100%;' name="recommended_food[]"> 
    @if ($food->recomemded_food) 
     {{ ($val = 'Fries') 
     && $chosen = in_array($val, $food->recommended_food) 
     ? 'selected':null}} 
     <option value="{{$val}}" {{$chosen}}>{{$val}}</option> 
     {{ ($val = 'Hot Dogs') 
     && $chosen = in_array($val, $food->recommended_food) 
     ? 'selected':null}} 
     <option value="{{$val}}" {{$chosen}}>{{$val}}</option> 
     {{ ($val = 'Hamburgers') 
     && $chosen = in_array($val, $food->recommended_food) 
     ? 'selected':null}} 
     <option value="{{$val}}" {{$chosen}}>{{$val}}</option> 
    @endif 
    </select> 
Verwandte Themen