Używam Select2 w moim webaplikacji. Ładuję moje pola Select2 za pomocą Ajax. Gdy sprawdzanie poprawności zakończy się niepowodzeniem, wszystkie dane wejściowe zostaną wypełnione tak jak poprzednio, z wyjątkiem pola wyboru2. Jak mogę przywrócić starą wartość po niepowodzeniu sprawdzania poprawności formularza? Mój zakład korzystał z Request::old('x')
, ale wstawia wartość (w moim przypadku identyfikator użytkownika) zamiast wybranego tekstu. Na przykład tekst John
stanie się 27
w polu wyboru. Jak mogę odzyskać tekst?Laravel Select2 stare dane wejściowe po sprawdzeniu poprawności
<select id="customer" name="customer" class="searchselect searchselectstyle">
</select>
JS:
token = '{{csrf_token()}}';
$(".searchselect").select2({
ajax: {
dataType: "json",
type: "POST",
data: function (params) {
return {
term: params.term,
'_token': token,
'data' : function(){
var result = [];
var i = 1;
$('.searchselect').each(function(){
result[i] = $(this).val();
i++;
});
return result;
}
};
},
url: function() {
var type = $(this).attr('id');
return '/get' + type;
},
cache: false,
processResults: function (data) {
return {
results: data
};
}
}
});
Edit
Jedyny (brudny) rozwiązanie znalazłem tak daleko jest następujące:
<select id="customer" name="customer" class="searchselect searchselectstyle">
@if(Request::old('customer') != NULL)
<option value="{{Request::old('customer')}}">{{$customers->where('id', intval(Request::old('customer')))->first()->name}}</option>
@endif
</select>
$customers
jest lista wszystkich klientów, więc oznacza to, że dla każdego pola Select2 muszę zapytaj dużą listę elementów, aby działało. Będzie to dość nieefektywne, jeśli mówimy o tysiącach wierszy na pole Select2.
Chyba musi być lepsze rozwiązanie. Kto może mi pomóc?
Nie działa, ponieważ spowoduje ustawienie identyfikatora w polu zamiast powiązanego tekstu. Należy pamiętać, że dane dla select2 wyglądają następująco: [id: ..., text: ...] Więc twoje rozwiązanie ustawi identyfikator jako tekst dla opcji zamiast identyfikatora skojarzonego z identyfikatorem – Markinson