2016-08-16 119 views
1

我正在嘗試創建一個Symfony2表單,我需要輸入日期和時間作爲事件的開頭,該事件以DateTime格式保存爲屬性。目前,使用24小時格式的下拉框輸入時間。我試圖將其更改爲12小時制。根據this post,Symfony TimeType不支持12小時格式。解決這個問題的一種方法是使用JQuery插件輸入時間,但我試圖避免這種情況。最簡單的方法是在上面鏈接post的jarofgreen的評論中顯示的,他在此爲TimeType.php中的Symfony供應商代碼提供了一個小補丁。我嘗試實施這一改變,它效果很好。問題是我需要在不更改供應商代碼的情況下執行此操作。相反,我決定爲TimeType創建一個擴展,如建議here如何在12小時格式中輸入Symfony2格式的時間?

我複製了vendor/symfony/symfony/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php供應商代碼中的TimeType.php,對其進行了必要的更改,並將其保存爲src/AppBundle/Form/Type下的MyTimeType。問題是我試圖改變的屬性屬於DateTimeType格式,而不是TimeType。據我所知,DateTimeType使用DateType和TimeType來創建一個DateTime對象。我的問題是,我需要對DateTimeType進行哪些更改,以便它將使用MyTimeType而不是TimeType來創建DateTime對象?

回答

0

我們結束了使用bootstrap-datetimepicker庫。它創建了一個12小時的下拉式菜單,用於輸入時間並以24小時格式節省時間。這種方法唯一的問題與時區有關。在我們的應用程序中,事件的開始時間與本地時區一起輸入表單。時間以UTC格式保存在數據庫中,時區保存在單獨的字段中。在使用datetimepicker庫之前,使用24小時下拉菜單輸入時間,並將當地時區考慮在內並正確保存。在添加datetimepicker後,當本地時區與php.ini中指定的系統時區不相同時,時間不會正確轉換爲UTC。我們決定不花更多時間在這個上面,並最終刪除可變時區字段。這不是最佳解決方案,但在這種情況下,以12小時格式輸入時間比輸入可變時區更重要。

相關問題