Merci pour cette proposition, depuis dans la nuit j'ai compris une partie du problème.
J'ai pu faire l'affichage et le remplissage correct comme je cherchais de la manière suivante :
Twig:
1 2
| {{ form_row(form.addresscity, {'attr':{'type':"small_int",'data-city':'address.city'}}) }}
<script>selectedCities['address.city'] = [{{ addressCity | raw }}]</script> |
Dans le controller du formulaire, j'ajoute les données :
return $this->render('mon.html.twig', [..., 'addressCity' => $file->getAddress() != null ? CityType::citiesForJs($file->getAddress()->getCity()) : '']);
citiesForJs() renvoie un objet JS correspondant au format de select2 avec les valeurs présentent.
Le JS:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
function initAutocompleteCity(selector) {
var cities = typeof selectedCities == "undefined" ? [] : selectedCities[$(selector).data('city')];
$(selector).select2({
data: cities,
ajax: {
url: "ajax/cities",
dataType: 'json',
delay: 250,
cache: true,
processResults: function (data) {
return{results: data};
}
},
minimumInputLength: 3,
multiple: $(selector).attr('multiple'),
allowClear: true,
selectOnClose: false
});
} |
De cette manière je charge bien les données que je veux et tout marche... jusuq'à la réception où là, comme je dit, citi.id n'avait aucune valeur de départ, donc n'importe qu'elle valeur qui arrive fait une erreur
“Unable to reverse value for property path 'id' for Symfony2 form ChoiceType field on Select2
J'en suis donc là, si je mets 'mapped' à false comme attribut (attr) lors de l'ajout du ChoiceType 'id' il fait la même erreur, il ne map pas sur un objet mais il veut quand même une valeur de sa liste de départ.
Partager