Symfony:如何处理表单中的日期字段

Posted

技术标签:

【中文标题】Symfony:如何处理表单中的日期字段【英文标题】:Symfony: How to handle date field in a form 【发布时间】:2016-01-20 14:00:14 【问题描述】:

我正在使用 Symfony 2.6...

我对表单中的日期字段有一些疑问!

1) 如果我在 twig 文件中的日期字段上使用 form_row (form.data) ,系统会将其呈现为 US/EN 样式(月日年)的日期...我可以在欧盟/IT 风格?

3) form_row 如何处理日期?

4) 月份可以用意大利语吗?并且可能是长篇? (我的客户是意大利老人)

【问题讨论】:

您可以使用 DateType 的格式选项定义自己的日期格式。 恕我直言,更好的选择是使用 JS 日期选择器来避免任何错误输入的日期。 我试过了......但它不起作用。 Frankbeen 答案还可以! 【参考方案1】:

确保您的网络服务器上启用了 phpintl 扩展,并且您在 app/config/config.yml 中将 en 更改为 itdefault_locale: 选项中,年/月/日的顺序应更改为意大利标准。

另一种解决方案是更改该单个字段的格式。你可以read it in the docs。

【讨论】:

【参考方案2】:

1) 可能您会得到该格式,因为它是在默认表单样式中定义的。最简单的方法是使用表单 customisation(http://symfony.com/doc/current/cookbook/form/form_customization.html).

在要使用的树枝中覆盖该样式

如果您在 twig 块的开头定义 % form_theme form_self %,您可以覆盖在 form_div_layout.html.twig(find the link to the code inside the page cited above) 中定义的默认表单类型。 在该代码中,日期的渲染部分将在 %- block date_widget -%, 左右,因此如果您可以在 twig 中重新定义此块,可能会改变

的默认行为
form_row (form.data)

3) form_row 返回一组字段的标签、错误和小部件(http://symfony.com/doc/current/reference/forms/twig_reference.html)。 对于日期,它通常会以您的表单样式中定义的格式返回标签​​和日期字符串。

4)您希望如何表达月份?如果它可以是单独的并且只需要在确认屏幕中呈现,也许您可​​以在提交表单时获取控制器内部的值然后获取表单值,然后您可以再次在树枝中返回它。

% if month == '1' Gennaio% endif %
% if month == '2' Febbraio% endif %

: : :

这很幼稚,但我认为至少对于输入来说,按数字输入月份并不是那么困难。正如上面的 cmets 中所建议的,DatePicker 在大多数情况下都可以完成这项工作。

【讨论】:

是的,这是一个幼稚的解决方案。在将记录插入数据库之前,需要对代码进行记录以记录表单并解码回原始格式......使用迭代器也很复杂......我找到了 Frankbeen的令人满意的答案>,我会很高兴意大利风格的约会是 3 个字符的月份……除非我的客户……

以上是关于Symfony:如何处理表单中的日期字段的主要内容,如果未能解决你的问题,请参考以下文章

如何处理节点中具有多个字段的表单中的表单数据?

如何处理 DBUtil 中的日期类型值

使用 Symfony 时如何处理连接表中的附加列?

如果模型表单排除了某些字段,当模型有一个干净的方法时,如何处理模型表单的验证?

骨干。表单有文件上传,如何处理?

如何处理mysql中的时间戳读取问题