2017-01-23 1 views
0

Ich verwende wenzhixin/multiple-select, da es alle Option ausgewählt hat. Ich versuche, ausgewählte Elemente auszuwählen, die beim Erstellen des Posts ausgewählt wurden.Ausgewählte Werte aus Multiselect in Laravel mit mehreren Auswahl jquery Plugin

Dies ist, was ich getan habe, aber es funktioniert nicht.

{{ Form::label('tags', 'Tags:') }} 
<select name="tags[]" multiple="multiple" id="tags"> 
    @foreach($tags as $tag) 
     <option value="{{$tag->id}}">{{$tag->name}}</option> 
    @endforeach 
</select> 

<script> 
    $("#tags").multipleSelect({ 
     placeholder: "Tags please" 
    }); 
    $('#tags').multipleSelect().val({!!json_encode($post->tags()->getRelatedIds())!!}).trigger('change'); 
</script> 

Ich wäre thakful wenn jemand mir helfen kann.

+0

Mögliches Duplikat von [Ausgewählte Werte aus einem Mehrfachauswahlformular in Laravel abrufen] (http://stackoverflow.com/questions/15358227/getting-selected-values-from-a-multiple-select-form-in-laravel) –

+0

Ich denke, Sie sollten etwas wie '$ ('# Tags') verwenden. MultipleSelect ('setSelects', [1, 3]);' anstelle von $ ('# tags'). MultipleSelect(). Val() ' –

+0

@GilleQ. Der Thread, den Sie verknüpft haben, hat das jquery-Plugin nicht verwendet. –

Antwort

0

Am Ende des Tages ist es nur ein HTML-Select-Element. In Anbetracht der Name tags[], dies innerhalb der Form einreichen und zugänglich über einen Controller als $request->get('tags') oder wenn mit Hilfe des Helfers, dann request()->get('tags');

Darüber hinaus können Sie die ausgewählten Elemente auf der nächsten Seite auf diese Weise passieren:

public function myFunctionToHandleTheForm() 
{ 
    $tags = App\Tag::all(); //for example, no idea what you use 
    $selectedTags = request()->get('tags'); 

    return view('my.view', compact('selectedTags', 'tags'); 
} 

Jetzt wird $tags ein numerisch geordnetes Array (aufsteigend) sein, das die ID's enthält, die von Ihrem Formular gesendet wurden. Sie können die Standardwerte gesetzt, die genau wie diese überprüft wurden:

{{ Form::label('tags', 'Tags:') }} 
<select name="tags[]" multiple="multiple" id="tags"> 
    @foreach($tags as $tag) 
     <option value="{{$tag->id}}" {{ in_array($tag->id, $selectedTags) ? 'selected="selected"' : null }}>{{$tag->name}}</option> 
    @endforeach 
</select> 

Im oben, wir überprüfen, ob die Tag-ID in der Liste der selected tag id's ist, und wenn ja, sind wir das selected Attribut festlegen. Ihr Plugin wird das verstehen und es korrekt übersetzen.

+0

danke für deinen Vorschlag. Ihr Code zeigt nur ausgewählte Tags an. Ich möchte, dass alle Tags angezeigt werden und nur die ausgewählten markieren. Wenn ein Benutzer einen Benutzer möchte, möchte er die Tags für den Beitrag ändern. –

+0

Zuvor habe ich das select2 jquery Plugin für handling Tags benutzt. Und der oben erwähnte Code hat perfekt damit funktioniert. Ich wechselte zu Mehrfachauswahl, da es alle Option ausgewählt hat. –

+0

@ZacharyDale Mein Code macht genau das, was Sie angeben. Es führt "alle Tags" durch und wählt "nur die zuvor ausgewählten" aus. Dies lässt diejenigen, die * nicht * ausgewählt wurden, unmarkiert *. – Ohgodwhy

Verwandte Themen