Crear un tipo de campo de formulario 'Ajaxified'

En mi aplicación, tengo un par de campos de formulario con muchas opciones. El problema que experimenté es similar aesta pregunta: obtener y analizar todas las opciones en cada carga de página es costoso (Twig muestra todas las opciones una y otra vez sin que sea posible el almacenamiento en caché del lado del cliente). Ese problema me hizo crear una forma de enviar las opciones a través de AJAX al navegador. Enfoque bastante simple:

Obtenga todas las opciones (clave-valor) a través de AJAX (por ejemplo, obteniendo /countries.json) y caché si es posible. (en este caso no es muy probable que los nombres de los países cambien muy a menudo)Use selectize, select2 o un complemento similar para insertar las opciones en el DOM.Disfruta de un formulario más rápido :-)

Para evitar que Symfony consulte todas las opciones (no es necesario: se están cargando a través de AJAX) agreguésetMaxResults(0) alQueryBuilder cuando se carga el formulario (agregando una opción a través del controlador). Sí, eso es kludge. Al enviar un formulario, seguirá realizando una consulta, ya que tiene que verificar si la opción seleccionada existe (y verificar Restricciones).

Me gustaría crear unTipo de campo de formulario personalizado que agrega esta funcionalidad a la actualEntityType: no cargue las opciones mientras procesa el formulario, pero aún verifique si la opción seleccionada existe. encontrémuchos ejemplos relacionado conmodificación dinámica de un formulario, pero no he encontrado ejemplos relacionados con la modificación de un solo campo de formulario, independientemente de su formulario principal.

¿Cómo creo un tipo de campo de formulario como este? ¿Qué es un buen punto de partida? AmpliarEntityType, ChoiceType o un otro enfoque?

Ya estoy usando Symfony 3.1, así que usandocarga diferida de opciones de formulario (Nuevo en Symfony 3.2) no será un problema. No estoy seguro si esta nueva característica está relacionada con mi problema.

Respuestas a la pregunta(3)

Su respuesta a la pregunta