[英]How can I make a custom field type in symfony2?
我想在 symfony2 中创建一个名为daterange
的自定义表单字段,它将扩展默认的 symfony 日期类型表单字段并将日期范围(开始日期和结束日期)放入两个不同的文本框中。
因为我不喜欢 twig 模板引擎这个例子仅适用于 PHP 模板
你需要做的是:
扩展Symfony\Component\Form\AbstractType
的新TestBundle\Form\Extension\Core\Type\DateRangeType
在这里你应该:
一个。 编写自己的 getParent、getName、buildForm 方法
湾。 getParent 返回“字段”
c。 获取名称返回“日期范围”
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 所说的检查表单定制。
为此,您需要将以下行添加到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 书的表单定制。
官方食谱中有一个关于创建自定义字段类型的 好条目
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.