2016-08-16 15 views
1

私はイベントの開始日時を入力する必要があるSymfony2フォームを作成しようとしています。これはDateTime形式のプロパティとして保存されます。現在、時間は24時間形式のドロップダウンボックスを使用して入力されます。私は12時間形式に変更しようとしています。 this postによると、Symfony TimeTypeは12時間形式をサポートしていません。この問題を回避する方法の1つは、時間を入力するためにJQueryプラグインを使用することですが、これを避けようとしています。これを行う最も簡単な方法は、上記のpostのjarofgreenによるコメントに示されています。ここで、彼はTimeType.phpのSymfonyベンダーコード用の小さなパッチを提案しています。私はこの変更を実装しようとしました。問題はベンダーコードを変更せずにこれを行う必要があることです。代わりに、hereのように、TimeTypeの拡張機能を作成することにしました。Symfony2フォームの時間を12時間形式で入力する方法は?

vendor/symfony/symfony/src/Symfony/Component/Form/Extension/Core/Type/TimeType.phpにベンダーコードからTimeType.phpをコピーし、必要な変更を加えて、src/AppBundle/Form/TypeのMyTimeTypeとして保存しました。問題は、私が変更しようとしているプロパティがTimeTypeではなく、DateTimeType形式に属していることです。私の知る限り、DateTimeTypeはDateTimeとTimeTypeを使ってDateTimeオブジェクトを作成します。私の質問は、DateTimeオブジェクトの作成にTimeTypeではなくMyTimeTypeを使用するように、私はDateTimeTypeにどのような変更を加える必要があるのでしょうか?

答えて

0

bootstrap-datetimepickerライブラリを使用しました。時間を入力するための12時間のドロップダウンメニューを作成し、時間を24時間形式で保存します。このアプローチの唯一の問題はタイムゾーンと関係があります。このアプリケーションでは、イベントの開始時間は、ローカルタイムゾーンとともにフォームに入力されます。時刻はUTC形式のデータベースに保存され、タイムゾーンは別のフィールドに保存されます。 datetimepickerライブラリを使用する前に、時間は24時間のドロップダウンメニューを使用して入力され、ローカルタイムゾーンを考慮して正しく保存されました。 datetimepickerを追加した後、ローカルタイムゾーンがphp.iniで指定されたシステムタイムゾーンと同じでない場合、時刻は正しくUTCに変換されません。私たちはこれ以上の時間を費やさずに、可変タイムゾーンフィールドを削除しました。それは最適な解決策ではありませんが、この場合、可変時間帯を入力できるようにするよりも12時間形式で時間を入力することが重要です。

関連する問題