开发者

How can I make a custom field type in symfony2?

开发者 https://www.devze.com 2023-03-16 02:06 出处:网络
I want to make a custom form field in symfony2 named da开发者_如何学JAVAterange, which will extends the default symfony date type form field and take date range(start date and end date) into two diffe

I want to make a custom form field in symfony2 named da开发者_如何学JAVAterange, which will extends the default symfony date type form field and take date range(start date and end date) into two different text-box.


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.


In order to do that, you need to add the following lines into app/config/config.yml

twig:
    form:
        resources:
            - 'YourSuperBundle:Form:fields.html.twig'

then in src/Your/SuperBundle/Resources/views/Form/fields.html.twig:

{% extends 'form_div_layout.html.twig' %}

{% block daterange_widget %}
     ... do the customization.
{% endblock %}

For additional reference please read form customization of Symfony 2.0 book.


There is a good entry in official cookbook on creating custom field type

0

精彩评论

暂无评论...
验证码 换一张
取 消