2016-07-15 10 views
1

-Controller @ aktualisierenWie können ausgewählte Werte von Select2 während der Verwendung von AJAX-Daten mit Laravel eingestellt werden?

//Update 
    $course = Course::findOrFail($id); 
    $course->name = Input::get('name'); 
    $course->code = Input::get('code'); 
    $course->credits = Input::get('credits'); 
    $course->description = Input::get('description'); 

    $course->tags()->sync(Input::get('tags')); // Use of sync method 

    //return [$course]; 
    $course->save(); 
    //Redirect 
    Session::flash('message', 'Successfully edited the course : '.$course->name); 
    return $this->show($course->code); 

HTML

<pre> 
<div class="form-group"> 
    {{Form::label('tags', 'Tag')}} 
    {{Form::select('tags[]',[],null,array('multiple'=>'multiple','name'=>'tags[]','id'=>'tag_list','class'=>'form-control'))}} 
    </div> 
</pre> 

Select2 Skript

function tagResultTemplater(tag) { 
    return tag.name + " : " + tag.type; 
    } 

    function tagSelectionTemplater(tag) { 
    return tag.id + " "+tag.name + " : " + tag.type; 
    } 
    $("#tag_list").select2({ 
    ajax: { 
     url: "{!! route('tags.json') !!}", 
     dataType: 'json', 
     delay: 250, 
     tags: true, 
     data: function (params) { 
     return { 
      q: params.term, // search term 
     }; 
     }, 
     processResults: function (data) { 
     return { 
      results: data 
     }; 
     }, 
     cache: true 
    }, 
    minimumInputLength: 1, 
    placeholder: function(){ 
     $(this).data('placeholder'); 
    }, 
    templateResult: tagResultTemplater, 
    templateSelection: tagSelectionTemplater 

    }); 

Ich arbeite an Kurs-Management-System als grad Projekt, kurz gesagt da ist ein ma ny zu vielen Relationen zwischen Kursen und Tags, und ich wollte die sync-Methode mit dem Select2-Paket verwenden, um Tags bequem aus Kursen anzuhängen und zu entfernen, aber ich finde keine Möglichkeit, die ausgewählten Werte von Select2 während der Verwendung von ajax festzulegen Daten. Wenn jemand eine einfache Anleitung zur Verfügung stellen kann, wäre es sehr geschätzt: D.

Antwort

0

In einer ähnlichen Situation hatte ich nur Formular-Generatoren

<select name="tags" id="tag_list" class="form-control" multiple> 
    @foreach ($course->tags as $tag) 
     <option value="{{ $tag->id }}" selected>{{ $tag->name }}</option> 
    @endforeach 
</select> 
+0

Das Problem mit zu vermeiden, ist, dass, wenn Sie Ajax-Daten mit Select2 verwenden sie alle schriftlichen Optionen entfernt und wieder schreibt sie mit der json Antwort von der ajax request –

+0

Ich möchte diesen Ansatz auch verwenden, aber das Problem ist, dass die templateResult und templatSelection zurückgeben undefined: undefined haben Sie eine Idee, wie die Option Tag schreiben, so dass Select2 die benötigten Daten extrahieren kann? –

+0

Ich habe zuvor keine benutzerdefinierte Vorlage verwendet. Aber laut select2 docs sollte es dasselbe sein. Überprüfen Sie [link] (https://select2.github.io/examples.html#data-ajax) für das Ajax-Beispiel mit einer vorausgewählten Option, vergessen Sie nicht, den Quellcode für die Vorlage zu überprüfen. Ich werde auch versuchen, es später zu testen – Gostwow

Verwandte Themen