Ich beziehe eine Stadtliste (nachdem ich einen Kreis aus einem Dropdown ausgewählt habe) unter Verwendung eines Ajax-Aufrufs mit Laravel 5.2 und Select2.js.Formatieren der JSON-Antwort in Laravel 5 für Select2.js
Ich mag die JSON-Antwort von dem Ajax-Aufruf zu formatieren, damit es die Select2 Kriterien für die Anzeige auf einer Drop-Down-Liste übereinstimmt (id
, text
)
Hier ist mein Controller:
public function postCounty(Request $request)
{
if($request->ajax())
{
$county = County::findOrFail($request->input('county_id'));
$cities = $county->cities()->orderBy('title', 'ASC')->get();
return response()->json($cities);
}
}
Es funktioniert Fein- und Rückkehr eine Liste der Städte:
[
{"id":1,"title":"City 1","slug":"city-1"},
{"id":2,"title":"City 2","slug":"city-2"},
{"id":3,"title":"City 3","slug":"city-3"}
]
ich brauche nur die Spalten abrufen id
und title
, so verwende ich ->pluck('title', 'id')
Es gibt diese:
{"1":"City 1","2":"City 2","3":"City 3"}
Um die Ergebnisse zu auf meiner Auswahloptionen Liste korrekt angezeigt, mit Select2, ich die Ergebnisse müssen wie folgt zurück:
[
{"id":"1","text":"City 1"},
{"id":"2","text":"City 2"},
{"id":"3","text":"City 3"}
]
Ich weiß, dass ich die Ergebnisse aus dem Array ->get()
mit JavaScript und Select2 processResults
formatieren kann, aber ich möchte es mit dem Controller zu tun, so dass es die JSON-Antwort direkt formatiert.
Hier ist eine vereinfachte Version meiner JS:
$("#countyFilter").select2().on("select2:selecting", function(e) {
var county_id = $(this).val();
$.ajax({
type:'GET',
url: 'mysite.com/api/county',
data: {county_id:county_id},
success: function(data){
$("#populateCities").select2({
data:data
});
}
});
});
Das Skript fast einwandfrei funktioniert, nur die data
Bedürfnisse formatiert werden.
Meine Frage:
Wie die JSON-Antwort in der Steuerung zu formatieren, so dass es [{"id":1,"text":"City 1"}]
statt [{"id":1,"title":"City 1","slug":"city-1"}]
BTW 'formatting' bedeutet etwas anderes, als was du denkst. –
@MarcinOrlowski Bedeutet es nur "Löschen" wie bei "Formatieren einer Festplatte"? Ich sollte vielleicht "Ausgabe" verwenden. Mein Englisch ist noch nicht Punkt :) – PhilMarc
http://www.dictionary.com/browse/formatting –