如何在symfony2中创建自定义字段类型?
我想在symfony2中创建一个名为daterange
的自定义表单域,它将扩展默认的symfony日期类型表单域,并将日期范围(开始日期和结束日期)分为两个不同的文本框。如何在symfony2中创建自定义字段类型?
因为我不喜欢树枝模板引擎这个例子只针对PHP模板
你需要的是做:
-
新
TestBundle\Form\Extension\Core\Type\DateRangeType
延伸Symfony\Component\Form\AbstractType
在这里你应该:
a。编写你自己的getParent,getName,buildForm方法
b。 getParent返回'字段'
c。 getName返回'daterange'
d。 buildForm具有$builder->add('start', ...)->add('end', ...)->setAttribute('widget', 'daterange')
它加入到DI(config.yml为例)
services: form.type.daterange: class: TestBundle\Form\Extension\Core\Type\DateRangeType tags: - { name: form.type, alias: daterange }
在
TestBundle/Resources/views/Form/daterange_widget.html.php
创建它新的小部件你可以以日期小部件为例。Src/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/views/Form/date_widget.html.php
添加到配置(config.yml为例)
framework: templating: form: resources: - 'TestBundle:Form'
而对于更多的小部件定制为nefo_x说检查form customization。
为了做到这一点,你需要将以下行添加到app/config/config.yml
twig:
form:
resources:
- 'YourSuperBundle:Form:fields.html.twig'
然后在src/Your/SuperBundle/Resources/views/Form/fields.html.twig
:
{% extends 'form_div_layout.html.twig' %}
{% block daterange_widget %}
... do the customization.
{% endblock %}
有关更多参考,请阅读Symfony的2.0书form customization。
+1提到'fields.html.twig'的路径 - 在文档中并不明显。谢谢。 –
您是否在某处发布了代码? –