繁体   English   中英

如何在 symfony2 中创建自定义字段类型?

[英]How can I make a custom field type in symfony2?

我想在 symfony2 中创建一个名为daterange的自定义表单字段,它将扩展默认的 symfony 日期类型表单字段并将日期范围(开始日期和结束日期)放入两个不同的文本框中。

因为我不喜欢 twig 模板引擎这个例子仅适用于 PHP 模板

你需要做的是:

  1. 扩展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')

  2. 将其添加到 DI(以 config.yml 为例)

    services:
        form.type.daterange:
            class: TestBundle\Form\Extension\Core\Type\DateRangeType
            tags:
                -  { name: form.type, alias: daterange }
  1. TestBundle/Resources/views/Form/daterange_widget.html.php中为其创建新的小部件,您可以以日期小部件为例。 Src/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/views/Form/date_widget.html.php

  2. 添加到配置(以 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM