2016-01-20 46 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

感謝很多。這工作! –

相關問題