Symfony 2 - 如何删除日期字段类型的默认日期选择器?

时间:2013-01-16 15:03:32

标签: forms symfony orm doctrine-orm

在我的formType中,我使用以下内容来渲染我的日期字段类型。

$builder->add('date_naissance', 'date', array(
            'input'  => 'datetime',
            'widget' => 'single_text',
        ));

这里是belox如何渲染。我的问题是我想使用一个jquery选择器,事实是输入似乎已默认包含一些丑陋的小部件来选择日期。我的问题很简单。如何获得该默认日期选择器的簧片。提前感谢您的回复。干杯。马克

enter image description here

5 个答案:

答案 0 :(得分:11)

编辑,因为symfony 2.6

您现在可以使用html5字段选项,例如:

->add('date', DateType::class, ['html5' => false]);

这将删除表单视图中的html5 type="date"


这是一个HTML5日期选择器。 html会有

type="date"

默认情况下由symfony输出,应该如此。

Chrome会看到这个并执行日期选择工具

解决问题的一些想法:

  1. 更改表单构建器中的格式:

    $builder->add('date_created', DateType::class, array( 'widget' => 'single_text'));

    在此处阅读更多内容:http://symfony.com/doc/current/reference/forms/types/date.html#format

  2. 删除浏览器datepicker:https://stackoverflow.com/a/11470344/744975

  3. 使用另一个javascript库中的一个覆盖浏览器datepicker:https://jqueryui.com/datepicker/(我的首选选项)

答案 1 :(得分:7)

从symfony 2.6开始,您可以设置'html5' => false以禁用HTML5类型。

示例:

$builder->add('establishment_date', 'date', array(
        'label'   => 'Establishment date',
        'widget'  => 'single_text',
        'html5'   => false,
));

答案 2 :(得分:5)

只需将默认类型更改为树枝内的文字:

{{form_widget(dateField, {'type':'text'})}}

答案 3 :(得分:4)

这不是来自Symfony的问题。当我生成日期字段时,我没有那种日期选择器。在不同的浏览器中检查您的页面和/或检查您可能已实现的一些捆绑包,这些捆绑包会生成此字段。

答案 4 :(得分:0)

你可以通过覆盖树枝主题中的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 %}