Quiero crear un campo de formulario personalizado en symfony2 llamado daterange
, que ampliará el campo de formulario de tipo de fecha de Symfony predeterminado y tomará el intervalo de fechas (fecha de inicio y fecha de finalización) en dos cuadros de texto diferentes.¿Cómo puedo hacer un tipo de campo personalizado en symfony2?
Respuesta
Porque no me gusta motor de plantillas ramita este ejemplo sólo para plantillas PHP
Lo que necesita es hacer:
Nueva
TestBundle\Form\Extension\Core\Type\DateRangeType
que se extiendeSymfony\Component\Form\AbstractType
Aquí debería:
a. escriba sus propios métodos getParent, getName, buildForm
b. getParent return 'field'
c. getName return 'daterange'
d. buildForm tiene$builder->add('start', ...)->add('end', ...)->setAttribute('widget', 'daterange')
añadirlo a la DI (config.yml como ejemplo)
services: form.type.daterange: class: TestBundle\Form\Extension\Core\Type\DateRangeType tags: - { name: form.type, alias: daterange }
Crear nuevo widget para ello en que
TestBundle/Resources/views/Form/daterange_widget.html.php
puede tomar widget de fecha como ejemplo.Src/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/views/Form/date_widget.html.php
Añadir a la configuración (config.yml como ejemplo)
framework: templating: form: resources: - 'TestBundle:Form'
Y para una mayor personalización widget de nefo_x como dijo comprobar form customization.
Con el fin de hacer eso, es necesario agregar las siguientes líneas en app/config/config.yml
twig:
form:
resources:
- 'YourSuperBundle:Form:fields.html.twig'
después en src/Your/SuperBundle/Resources/views/Form/fields.html.twig
:
{% extends 'form_div_layout.html.twig' %}
{% block daterange_widget %}
... do the customization.
{% endblock %}
Como referencia adicional, por favor leer form customization de Symfony libro 2.0.
+1 Por mencionar la ruta para 'fields.html.twig' - no es obvio en la documentación. Gracias. –
Hay un libro de cocina en good entry oficial sobre la creación de campos personalizados de tipo
- 1. ¿Cómo hacer que form_rest() no muestre un campo con Symfony2?
- 2. Cómo crear un evento personalizado en symfony2
- 3. ¿Cómo agregar un campo de autocompletar en formularios Symfony2?
- 4. ¿Cómo puedo recibir un JSON en Symfony2
- 5. ¿Cómo puedo hacer Html.CheckBoxFor() funciona en un campo de cadena?
- 6. ¿Cómo se usa un tipo de datos personalizado como un campo en drupal 7?
- 7. campo Entidad parámetro de consulta de tipo personalizado
- 8. Cómo hacer un diccionario personalizado en Android
- 9. ¿Cómo hacer un TextView personalizado?
- 10. ¿Cómo puedo hacer un post procesador de onda transportadora personalizado?
- 11. Symfony2: acceso a campos de entidad en la ramita con un tipo de campo entidad
- 12. ¿Puede el validador personalizado hacer que un campo sea opcional?
- 13. ¿Cómo puedo obtener los errores de un campo individual en la plantilla de ramitas Symfony2?
- 14. Uso de un proveedor de autenticación personalizado en Symfony2
- 15. ¿Cómo puedo determinar si System.Type es un tipo personalizado o un tipo de Framework?
- 16. ¿Cómo agregar un tipo de mime personalizado?
- 17. ¿Cómo agregar un campo personalizado para ordenar en Magento?
- 18. ¿Cómo agregar un campo de autocompletar en un formulario Symfony2 para una colección y usar Propel?
- 19. ¿Cómo puedo definir un tipo de "No hacer nada"?
- 20. Hacer un campo único en función de otro campo
- 21. Cómo hacer un diccionario personalizado para Hunspell
- 22. Symfony2 comprobador de usuario personalizado basado en eula aceptado
- 23. Drupal 7 cómo representar el campo personalizado
- 24. Agregar un campo personalizado a Ubercart Factura
- 25. Agregar un campo de entrada personalizado en formtastic?
- 26. Cómo mostrar personalizado página de error 404 - Symfony2
- 27. Cómo registro un tipo de archivo personalizado en iOS
- 28. ¿Cómo puedo inyectar un UITypeEditor personalizado para todas las propiedades de un tipo de fuente cerrada?
- 29. Django - ¿cómo puedo acceder al campo de formulario desde el interior de un widget personalizado
- 30. AWK/BASH: ¿cómo hacer coincidir un campo en un archivo de un campo en otro?
Ha publicado el código en algún lugar? –