У меня есть форма со следующими полями:
$builder
->add('title', 'text')
->add('body', 'textarea')
->add('tags', 'entity', [
'class' => 'AppBundle\Entity\Tag',
'choice_label' => 'name',
'expanded' => false,
'multiple' => true,
]);
Пользователь может выбрать несколько тегов. Все работает отлично. Но теперь, когда количество тегов становится очень большим (более 20000 тегов), рендеринг страницы становится очень медленным, потому что тип объекта загружает весь тег в selectbox. Поэтому я реализую блок выбора автозаполнения jQuery, чтобы предотвратить загрузку всей сущности, но когда я отправляю форму, валидатор по-прежнему загружает все теги для проверки! Как я могу решить эту проблему проверки? Спасибо!
Вместо того, чтобы использовать entity
тип поля, используйте простой text
тип, который будет принимать идентификатор связанной сущности. Вам также необходимо создать преобразователь данных для преобразования отправленного идентификатора в объект сущности (и наоборот), который будет установлен в сущности данных формы.
Проверка будет работать так, как если бы она была entity
тип поля, благодаря преобразователю данных.
Других решений пока нет …