10周年のSPコンテンツ!
3
マリオ @fumi_mario
Date(Time)Typeで(date_)widgetがsingle_textの場合checkdate()が掛からない。DateTimeToLocalizedStringTransformer::reverseTransform()内で掛けたいとこだけど。 #symfony2
マリオ @fumi_mario
$options['widget'] === 'single_text' 以外の場合、DateTimeToArrayTransformer に行き、checkdate() が実装されているのだけどなあ。 #symfony2
Hideyuki SHIMOOKA @shimooka
@fumi_mario checkdateに渡す年月日が別れて入力されない(single_textだとフォーマットを元に文字列を分解する必要がある)から面倒でやってらんね、とかですかねぇ。。。
マリオ @fumi_mario
@shimooka そうなのかも知れませんね。一度 date_parse() してcheckdate() するコード 4 行程度を入れると期待する動作になったのですが、他と動作を合わせるためにも入れて欲しいですね。2/30 が 3/1 でそのまま動いちゃいますから。
マリオ @fumi_mario
formatのオプションがあるからdate_parse()じゃ駄目だ。 RT @fumi_mario: @shimooka そうなのかも知れませんね。一度 date_parse() してcheckdate() するコード 4 行程度を入れると期待する動作になったのですが、他と動作
Hideyuki SHIMOOKA @shimooka
@fumi_mario やるとすると、多分こんな感じですかね > http://t.co/mQHFALAV
マリオ @fumi_mario
これは確かに面倒ですね。RT @shimooka: @fumi_mario やるとすると、多分こんな感じですかね > http://t.co/GQ7n2hvJ
Atsuhiro Kubo @iteman
@rsky http://t.co/xsGsIg3M のデフォルト値についてマニュアルと異なるようですが、バグなのかドキュメントの間違いなのかわかりません。助けて。
Ryusuke SEKIYAMA @rsky
@iteman 行き着くところはICUのDateFormat::isLenient()→Calendar::isLenient()なのですが、ICU 3.4.1のソースコードを見た限りではCalendarのコンストラクタで fLenient(TRUE) と初期化されているので(続
Ryusuke SEKIYAMA @rsky
@rsky @iteman ドキュメントが誤っています。ICUの実装ではデフォルトで寛大(lenient)です
Atsuhiro Kubo @iteman
@rsky ありがとうございます。すっきりしました。
Atsuhiro Kubo @iteman
Symfony のフォームで誤った日付(2012/02/30)が正しい DataTime オブジェクト(2012/03/01)に変換される。 #symfony #php
Atsuhiro Kubo @iteman
この挙動はフォームフィールドの形式が単一のテキストの場合のみ発生する。 #symfony #php
Atsuhiro Kubo @iteman
IntlDateFormatter オブジェクトが変換に使われている。 #symfony #php
Atsuhiro Kubo @iteman
誤った日付がエラーになるかどうかは IntlDateFormatter::isLenient() メソッドの値で決まる。 #symfony #php
Atsuhiro Kubo @iteman
PHPマニュアルにはデフォルトのパーサは厳格なパーサ(isLenient() メソッドは false を返す)であると記述されている。 #symfony #php
Atsuhiro Kubo @iteman
実際にはデフォルトのパーサは寛大なパーサ(isLenient() メソッドは true を返す)である。 #symfony #php
Atsuhiro Kubo @iteman
大元の ICU は寛大なパーサ(isLenient() メソッドは true を返す)をデフォルトとする。 #symfony #php
Atsuhiro Kubo @iteman
PHP マニュアルの記述が間違っている可能性がある。 #symfony #php
Atsuhiro Kubo @iteman
Symfony の挙動が PHP マニュアルに従って厳格なパーサを意図している可能性がある。 #symfony #php
Atsuhiro Kubo @iteman
Symfony のフォームについて setLenient(false) を呼び出すと、誤った日付がエラーになる。 #symfony #php
Atsuhiro Kubo @iteman
@takagi 修正ありがとうございます。これで Symfony 側にも自信を持って提案できます。
TAKAGI Masahiro @takagi
@iteman サンプルはちゃんとデフォルトTRUE前提で書いているし、どう見ても単純ミスでしょうね。
Atsuhiro Kubo @iteman
@takagi そうですか。放置されていたということは、まだユーザが少ないんでしょうね。
Atsuhiro Kubo @iteman
https://t.co/VHkKF04d こんなことでいいの?こうなったら徹底的に追求する。
残りを読む(17)

コメント

Atsuhiro Kubo @iteman 2012年5月30日
まとめを更新しました。
ログインして広告を非表示にする
ログインして広告を非表示にする