Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I make a custom field type in symfony2?

Tags:

I want to make a custom form field in symfony2 named daterange, which will extends the default symfony date type form field and take date range(start date and end date) into two different text-box.

like image 325
logicrow Avatar asked Jun 28 '11 12:06

logicrow


1 Answers

Cause I don't like twig template engine this example only for PHP templating

What you need is to make:

  1. New TestBundle\Form\Extension\Core\Type\DateRangeType which extends Symfony\Component\Form\AbstractType

    Here you should:
    a. write your own getParent, getName, buildForm methods
    b. getParent return 'field'
    c. getName return 'daterange'
    d. buildForm has $builder->add('start', ...)->add('end', ...)->setAttribute('widget', 'daterange')

  2. Add it to the DI (config.yml as example)

     services:         form.type.daterange:             class: TestBundle\Form\Extension\Core\Type\DateRangeType             tags:                 -  { name: form.type, alias: daterange } 
  1. Create new widget for it in TestBundle/Resources/views/Form/daterange_widget.html.php you can take date widget as example. Src/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/views/Form/date_widget.html.php

  2. Add to config (config.yml as example)

    framework:        templating:            form:                resources:                    - 'TestBundle:Form' 

And for more widget customization as nefo_x said check form customization.

like image 143
aubergine Avatar answered Sep 20 '22 07:09

aubergine