【问题标题】:Symfony 2 - How to remove the default date picker of the Date Field Type?Symfony 2 - 如何删除日期字段类型的默认日期选择器?
【发布时间】:2012-12-30 22:43:15
【问题描述】:

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

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

这里是它的渲染方式。我的问题是我想使用一个 jquery 选择器,问题是输入似乎已经默认包含一些丑陋的小部件来选择日期。我的问题很简单。我怎样才能得到那个默认日期选择器的芦苇。预先感谢您的回复。干杯。马克

【问题讨论】:

标签: forms symfony orm doctrine-orm


【解决方案1】:

编辑,自 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. 删除浏览器日期选择器:https://stackoverflow.com/a/11470344/744975

  3. 用另一个 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 %}
        

        【讨论】:

          猜你喜欢
          • 2021-03-14
          • 1970-01-01
          • 2011-10-02
          • 2017-08-11
          • 1970-01-01
          • 2011-04-19
          • 2013-08-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多