У меня есть форма с ChoiceType. Значения устанавливаются с помощью Ajax-запроса (этот выбор зависит от другого выбора).
Но есть много вариантов (13200), и когда я отправляю форму с правильным выбором, у меня появляется эта ошибка «Это значение недопустимо».
Я попробовал 100 вариантов, и это хорошо работает.
Эта форма построена с помощью EventsListener (упрощенная версия):
$ff = $builder->getFormFactory();
// function to add 'template' choice field dynamically
$func = function ( \Symfony\Component\Form\FormEvent $e) use ($ff, $curlRequest, $builder, $rapport) {
$data = $e->getData();
$form = $e->getForm();
if ($form->has('idsSouscripteur') )
{
$form->remove('idsSouscripteur');
}
$idClient = $data->getIdClient() > 0 ? $data->getIdClient() : null;
$idsSouscripteur = count($data->getIdsSouscripteur()) > 0 ? $data->getIdsSouscripteur() : null;
$souscripteursArray = [];
if (!is_null($idClient)) {
$souscripteurs = /* Request to get 'souscripteurs' objects */;
foreach ($souscripteurs as $souscripteur) {
$souscripteursArray[$souscripteur->nomSouscripteur] = $souscripteur->numInterne;
}
}
$form
->add('idsSouscripteur', ChoiceType::class, [
'label' => 'rapports.block_2.souscripteur',
'mapped' => false,
'multiple' => true,
'choices' => $souscripteursArray,
'constraints' => array(
new NotBlank()
),
'attr' => [
'placeholder' => 'rapports.block_2.souscripteur_placeholder'
]
]);
if (!is_null($idsSouscripteur)) {
$rapport->setIdsSouscripteur($idsSouscripteur);
}
};
// Register the function above as EventListener on PreSet and PreBind
$builder->addEventListener(FormEvents::PRE_SET_DATA, $func);
$builder->addEventListener(FormEvents::PRE_SUBMIT, $func);
Кто-нибудь знает, почему Symfony не работает с большим массивом?