Symfony2:使用具有相同名称的自定义字段类型覆盖内置字段类型

2024-01-29

As per 本文 http://symfony.com/doc/current/cookbook/form/create_custom_field_type.html在 Symfony 文档上,我创建了一个自定义字段类型,将其设置为services.yml,并且我能够成功地使用它。

例如,我创建一个名为的自定义字段customdate如下,效果完美:

# src/Acme/DemoBundle/Resources/config/services.yml
services:
    acme_demo.form.type.date:
        class: Acme\DemoBundle\Form\Type\DateType
        tags:
            - { name: form.type, alias: customdate }

但是,如果我尝试将自定义字段命名为date(这与现有的 Symfony 字段类型 http://symfony.com/doc/current/reference/forms/types/date.html,因为这是我试图覆盖的),如下所示,然后 Symfony 完全忽略我的自定义字段,并默认为内置的 Symfonydate字段类型改为:

# src/Acme/DemoBundle/Resources/config/services.yml
services:
    acme_demo.form.type.date:
        class: Acme\DemoBundle\Form\Type\DateType
        tags:
            - { name: form.type, alias: date }

我已经检查过我的getName()函数返回正确的名称,与我在中提供的别名相匹配services.yml.

我使用上述服务的代码如下。

这有效:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('date', 'customdate')));
}

这不起作用:(或者更确切地说,Symfony 使用内置字段类型而不是我的)

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('date', 'date')));
}

我应该注意,如果我将“customdate”或“date”替换为手动创建的对象,例如new Date()然后就可以正常工作了。问题似乎具体在于 Symfony 更喜欢其内置字段类型而不是中指定的字段类型services.yml.

我的问题:有没有办法用同名的自定义字段类型覆盖内置的 Symfony 字段类型?显然,根据我上面的描述,Symfony 似乎会忽略任何与内置 Symfony 字段类型同名的自定义字段。有没有办法解决?


据我所知,没有办法真正覆盖基本字段类型,您可以继承它们并使用您自己的名称。

但是,如果您要覆盖的字段类型未提供您认为应该报告的该类型可能存在的问题的功能。

对于您的情况,日期类型不采用典型的 php date() 格式字符串。从查看文档来看here http://symfony.com/doc/current/reference/forms/types/date.html#format我们看到日期格式是由 IntlDateFormatter 类解析的。对于有效的格式请查看这个清单 http://userguide.icu-project.org/formatparse/datetime#TOC-Date-Time-Format-Syntax.

来完成你想要的格式date('d M Y')你会使用:

$builder->add('my_date_field', 'date', array(
    'format'=>'d MMM Y'
));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Symfony2:使用具有相同名称的自定义字段类型覆盖内置字段类型 的相关文章

随机推荐

  • 什么是 Array.map(Function.call,Number)

    var array1 1 4 9 16 map1 array1 map Function call Number 为什么map1的输出是 0 1 2 3 这个map函数是做什么的 Array prototype map https deve
  • Android 周期性 JobService 永远不会启动

    我有一个 JobService 我想定期启动它 目前 为了进行测试 我正在使用一个简单的 public class SenderService extends JobService Override public boolean onSta
  • 使用 C# 和 BizTalk 将 Excel (xlsx) 转换为 XML

    我已经查看了该论坛上有关类似问题的大多数主题 但尚未找到我正在寻找的内容 我正在尝试编写一个管道组件BizTalk 2013 R2使用 C 简单地转换传入的Excel 2010 xlsx文件到它的裸 基本 XML 表示形式 我不想针对它运行
  • 警告:mysql_num_rows() 期望参数 1 是给定的资源、对象[重复]

    这个问题在这里已经有答案了 q SELECT FROM tbl quevote WHERE que id qid and voteby uid result mysqli gt query q or die mysqli error mys
  • asp.net 下拉列表和视图状态

    我有一个下拉列表 可以触发自动回发并触发 SelectedIndexChanged 更改事件 我已将 viewstate 设置为 true 但由于某种原因 所选值在回发之间不会保留 我已经使用了下拉列表数百次 但似乎无法弄清楚为什么会发生这
  • Angular2 - 如何将字符串枚举与 *ngIf 一起使用

    我该如何通过enum当我使用时到一个函数 ngIf在角度 我有以下代码 export enum RoleType User User Admin Admin 组件功能 public hasAccess role RoleType check
  • 负面清单索引? [复制]

    这个问题在这里已经有答案了 我试图理解下面的代码 node list n for i in xrange 1 numnodes 1 tmp session newobject n append tmp link n 0 n 1 具体来说 我
  • 使用 Java 终止进程

    我想知道如何 杀死 已经启动的进程 我知道 Process API 但我不确定 是否可以使用它来 杀死 已经运行的进程 例如 firefox exe 等 如果可以使用 Process API 您能指出我吗 正确的方向 如果没有 还有哪些其他
  • 通过查询字符串将对象列表传递给 MVC 控制器

    我遇到了一种情况 需要将对象列表传递给 MVC 控制器 但我不确定如何在查询字符串中格式化它 我想要这样做的原因是因为这不是一个 Web 应用程序 它是一个通过查询字符串接受数据并将其路由到执行工作的控制器的 Web 服务 因此 给定一个名
  • SQL Server - 复杂的动态数据透视列

    我有两个表 Controls 和 ControlChilds 父表结构 Create table Controls ProjectID Varchar 20 NOT NULL ControlID INT NOT NULL ControlCo
  • 如何将 __init__ 参数传递给使用 qmlRegisterType 注册的类?

    是否可以使用 qmlRegisterType 函数将 init 参数传递给注册到 QML 的 python 类 如果是这样 当在 QML 中实例化类时它们会被传递吗 我已使用 qmlRegisterType 注册了该类 但没有找到将另一个类
  • FormArray的使用和动态添加控件行

    我在尝试使用 Angular 2 和 Forms 做某事时遇到了麻烦 假设我有一个邀请列表 其中有两个字段 分别用于姓名和电子邮件 以及一个用于添加更多行的按钮 姓名 电子邮件 姓名 电子邮件 添加行 我有点知道您可以使用 FormArra
  • 如何获取

    我有一个FlowPanel 其高度是固定的 实际上是其父级高度的百分比 该高度是固定的 在此面板中 我添加了几个div元素 使用 CSS 我将其高度设置为其父级的 100 我想要做的是使用 javascript 将其宽度设置为等于其高度 我
  • 使用最新的 Android L 支持 v4 进行 Android 活动转换

    我正在为我的应用程序实现材料设计 我发现可以在此处进行活动之间的转换 http android developers blogspot com es 2014 10 implementing material design in your
  • Jquery 错误:需要对象

    这是我在 aspx 页面中的代码
  • android - 如何使文本视图滚动?

    实际上 我在文本视图中显示了一些数据 但它的一半数据超出了屏幕 所以我需要帮助来使文本视图滚动或任何其他可以向下滚动屏幕的东西 任何帮助 将不胜感激 将 TextView 放入 XML 中的 ScrollView 中 如下所示
  • Maven + Cucumber-jvm - 如何根据环境运行不同的功能子集

    我正在努力实现这一目标 我想配置一个 Maven 项目 以便它根据所选配置文件运行不同的 Cucumber 功能子集 dev pro 例如 我有几个功能文件来测试网络导航 使用标签来指定环境 PRO pro Feature Nav Pro
  • 如何使用 gdb“观察”C++ 动态数组?

    考虑以下示例 int size 10 kk new int size for int i 0 i lt size i kk i i delete kk 如何为整个阵列添加监视 我可以一一添加手表 kk 0 kk 1 但既然我知道数组的长度
  • kubectl exec 到多容器 pod 的容器中

    我在登录多容器 Pod 的一个容器时遇到问题 我从以下位置获取容器 IDkubectl describe pod
  • Symfony2:使用具有相同名称的自定义字段类型覆盖内置字段类型

    As per 本文 http symfony com doc current cookbook form create custom field type html在 Symfony 文档上 我创建了一个自定义字段类型 将其设置为servi