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】:确保您的网络服务器上启用了 php 的 intl 扩展,并且您在 app/config/config.yml 中将 en 更改为 it在 default_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:如何处理表单中的日期字段的主要内容,如果未能解决你的问题,请参考以下文章