J'ai utilisé cette answer pour créer un formulaire pour une liste d'entités avec une case à cocher sur chaque ligne:Envoyer élargi EntityType terrain avec ajax
Formulaire
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('sites', EntityType::class, [
'required' => false,
'class' => Site::class,
'choice_label' => function($site){
return '['.$site->getId().']';
},
'multiple' => true,
'expanded' => true
]);
}
Brindille:
{% for site in sites %}
<tr>
<td>{{ form_widget(actionform.sites[site.getId]) }}</td>
Cependant, je ne peux pas soumettre le droit ajax:
Actuellement j'utilise:
$.post(
'{{ path('site_add_to_upgrade', { 'page': page }) }}',
{
'site_action_form[_token]': '{{ actionform._token.vars.value }}',
'site_action_form[sites]': $('.itemlist input[name^="site_action_form"]:checked').serialize()
}
)
mais cela jette un l'erreur:
\Symfony\component\Form\FormError
message: This value is not valid
messageParameters:
{{ value }}: site_action_form%5Bsites%5D%5B%5D=4
Comment puis-je soumettre ces cases à cocher, donc je peux boucle à travers eux?
Pour référence à toute personne aidant, le codage URL décodé dans le message d'erreur est: 'site_action_form [des sites] [] = 4' –
Je ne pense pas, vous devez passer' site_action_form [ _token] 'manuellement en ajax. Il doit avoir été masqué lorsque 'FormType' est rendu. – Jeet