2011-06-28 23 views
20

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?

+0

Ha publicado el código en algún lugar? –

Respuesta

22

Porque no me gusta motor de plantillas ramita este ejemplo sólo para plantillas PHP

Lo que necesita es hacer:

  1. Nueva TestBundle\Form\Extension\Core\Type\DateRangeType que se extiende Symfony\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')

  2. 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 } 
  1. 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

  2. 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.

6

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.

+0

+1 Por mencionar la ruta para 'fields.html.twig' - no es obvio en la documentación. Gracias. –

2

Hay un libro de cocina en good entry oficial sobre la creación de campos personalizados de tipo

Cuestiones relacionadas