我有一個簡單的窗體,我使用jquery UI日期選取器來輸入生日。symfony日期驗證本地化
並在服務器端我使用symfony驗證與日期驗證。
問題是驗證只接受這種格式輸入:YYYY-MM-DD
但在其他當地人喜歡在英國的格式爲:DD/MM/YYYY
和服務器對錯誤。
你有什麼建議嗎?
我使用symfony窗體對象與內部驗證, 所以我不希望強制手動更改格式。
我有一個簡單的窗體,我使用jquery UI日期選取器來輸入生日。symfony日期驗證本地化
並在服務器端我使用symfony驗證與日期驗證。
問題是驗證只接受這種格式輸入:YYYY-MM-DD
但在其他當地人喜歡在英國的格式爲:DD/MM/YYYY
和服務器對錯誤。
你有什麼建議嗎?
我使用symfony窗體對象與內部驗證, 所以我不希望強制手動更改格式。
正如您可以從文檔「date」中閱讀的,約束日期僅執行驗證格式「YYYY-MM-DD」。
所以,你有兩個選擇:
一個(最簡單和最合乎邏輯的)是在表單字段「format」手動設置格式:
$builder->add('date', 'date', array(
'widget' => 'single_text',
'format' => 'dd-MM-yyyy',
));
這樣會形式
本身可以反轉日期並將正確的格式傳遞給驗證器(和數據庫)。
另一種是創建約束回調「callback」,並創建自己的驗證邏輯。
還有另一種方法,即使它被插入到字符串的鍵中,它也是約束正則表達式「regex」。
以這種方式,您將需要創建一個非常精確(和複雜)的正則表達式。
對於像第一個解決方案一樣簡單的問題是最合適的!
編輯:
jQuery UI的日期選擇器鎖定到輸入類型的文本,你不需要手動創建它。
正如我在例子中寫的,如果使用'widget' => 'single_text'
會產生輸入類型的文本!
你可以設置一個類到日期字段,以便與jquery掛鉤。
簡單例子:
形式:
$builder->add('date', 'date', array(
'widget' => 'single_text',
'format' => 'dd-MM-yyyy',
'attr' => array(
'class' => 'your_class'),
));
的javascript:
$(function() {
$(".your_class").datepicker();
});
,如果我不使用symfony的形式日期格式。我使用jquery datepicker。 –
請參閱編輯我的答案。 – Lughino