Symfony 2 - 如何删除日期字段类型的默认日期选择器?
Posted
技术标签:
【中文标题】Symfony 2 - 如何删除日期字段类型的默认日期选择器?【英文标题】:Symfony 2 - How to remove the default date picker of the Date Field Type? 【发布时间】:2012-12-30 22:43:15 【问题描述】:在我的 formType 中,我使用以下内容来呈现我的日期字段类型。
$builder->add('date_naissance', 'date', array(
'input' => 'datetime',
'widget' => 'single_text',
));
这里是它的渲染方式。我的问题是我想使用一个 jquery 选择器,问题是输入似乎已经默认包含一些丑陋的小部件来选择日期。我的问题很简单。我怎样才能得到那个默认日期选择器的芦苇。预先感谢您的回复。干杯。马克
【问题讨论】:
如果这仍然困扰您,请查看更新后的答案以获得最优雅的解决方案:***.com/a/14362310/744975 【参考方案1】:编辑,自 symfony 2.6 起
您现在可以使用 html5 字段选项,例如:
->add('date', DateType::class, ['html5' => false]);
这将删除表单视图上的 html5 type="date"
。
它是一个 HTML5 日期选择器。 html 将有
type="date"
这是 symfony 默认输出的。
Chrome 会看到这一点并执行日期选择器,
解决问题的一些想法:
在表单生成器中更改格式:
$builder->add('date_created', DateType::class, array(
'widget' => 'single_text'));
在此处阅读更多信息:http://symfony.com/doc/current/reference/forms/types/date.html#format
删除浏览器日期选择器:https://***.com/a/11470344/744975
用另一个 javascript 库中的日期选择器覆盖浏览器日期选择器:https://jqueryui.com/datepicker/(我的首选)
【讨论】:
【参考方案2】:从 symfony 2.6
开始,您可以设置 'html5' => false
以禁用 HTML5 类型。
例子:
$builder->add('establishment_date', 'date', array(
'label' => 'Establishment date',
'widget' => 'single_text',
'html5' => false,
));
【讨论】:
【参考方案3】:只需将默认类型更改为树枝内的文本:
form_widget(dateField, 'type':'text')
【讨论】:
【参考方案4】:这不是来自 Symfony 的真正问题。生成日期字段时,我没有那种日期选择器。在不同的浏览器中检查您的页面和/或检查您可能已经实现的一些捆绑包,这些捆绑包会生成此字段。
【讨论】:
我在那儿。感谢您尝试提供帮助。你的回答是一个很好的提示。我尝试使用 Safari 而不是 Chrome 呈现页面,并且那个丑陋的日期选择器消失了。我现在必须弄清楚它是否真的来自 Chrome,如果是的话,如何删除它......【参考方案5】:您可以通过在 twig 主题中覆盖 form_widget_simple
来做到这一点(请参阅 http://symfony.com/doc/current/cookbook/form/form_customization.html)
% block form_widget_simple %
% spaceless %
% set type = type|default('text') == 'date' ? 'text' : type|default('text') %
<input type=" type " block('widget_attributes') % if value is not empty %value=" value " % endif %/>
% endspaceless %
% endblock form_widget_simple %
【讨论】:
以上是关于Symfony 2 - 如何删除日期字段类型的默认日期选择器?的主要内容,如果未能解决你的问题,请参考以下文章
在 Symfony 中保存数据库时如何保留 updated_at 日期字段?