2016-01-20 107 views
0

我正在使用Symfony 2.6 ...Symfony:如何处理表单中的日期字段

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

1)如果我在树枝上的日期字段使用{{ form_row (form.data) }}文件系统使得它在美国/ EN风格的日期(年月日)......我可以得到它EU/IT风格?

3)如何form_row与日期一起使用?

4)意大利语可以吗?并可能以长形式? (我的客户是老意大利人)

+0

您可以使用DateType的格式选项定义自己的日期格式。 – mblaettermann

+0

一个更好的选择恕我直言,将使用JS日期选择器,以避免任何错误输入的日期。 – mblaettermann

+0

我试过了...但它不起作用。 ** Frankbeen **答案可以! –

回答

0

1) 可能你会得到这种格式,因为它是用默认的窗体样式定义的。最简单的方法是覆盖在树枝这种风格你会使用形式customisation(http://symfony.com/doc/current/cookbook/form/form_customization.html).

如果您在树枝块的开头定义{% form_theme form_self %}使用,可以覆盖这是在form_div_layout.html.twig(find the link to the code inside the page cited above)定义默认表单类型。 里面的代码,日期的渲染部分将围绕{%- block date_widget -%},所以,如果你可以在你的树枝重新定义这个块,可能会改变的

{{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 %} 

: : :

这是很幼稚,但我认为至少在输入时,它也不是那么难通过数字输入一个月。正如上面的评论中所建议的那样,DatePicker在大多数情况下都可以完成这项工作。

+0

是的是一个天真的解决方案。在DB中插入一条记录之前,将代码记录到表单并解码回原始格式有点日志...使用迭代器也很复杂...我找到了** Frankbeen **满意的答案,我会很高兴与意大利风格日期3个字符的月份...除非我的客户... –

+0

**长**不记录 –

1

确保PHP的国际扩展您的网络服务器启用,您在DEFAULT_LOCALE改变EN在app /配置/ config.yml:选项,今年的订单/月/日应改为意大利标准。

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

+0

感谢很多。这工作! –

相关问题