プロジェクト

全般

プロフィール

Bug(バグ) #3270

未完了

sfValidatorDateで「年」に 0 を入力した場合に空値として認識される

kaoru n さんがほぼ12年前に追加. ほぼ5年前に更新.

ステータス:
New(新規)
優先度:
Normal(通常)
担当者:
-
対象バージョン:
開始日:
2012-12-05
期日:
進捗率:

0%

予定工数:
3.6 で発生するか:
Yes (はい)
3.8 で発生するか:
Yes (はい)

説明

https://redmine.openpne.jp/issues/2882の修正時に発見

現象

コミュニティイベントの作成時、「募集期日」の「年」に 0 と入力された状態(「月」「日」は入力しない)で送信しても「正しくありません。」と表示されずにイベントの作成が完了する。

原因

入力チェックに使用しているクラスsfValidatorDate内で入力値のEmptyチェックを行っています(sfValidatorDateクラスのisEmptyメソッド)が、与えられた引数がarrayの場合に「array_filter」という関数を使用しています。
この関数は(http://php.net/manual/ja/function.array-filter.phpより)

コールバック関数が与えられなかった場合、 input のエントリの中で FALSE と等しいもの (boolean への変換 を参照ください) がすべて削除されます。 

ということで、年に入力された0がfalse扱いされ削除されます。
その後Emptyチェックを行うため、年に0のみが入力された場合、Emptyと判定され必須項目ではないためエラーチェックに引っかかりません。

修正内容

sfValidatorDateでなく、opValidatorDateを使用するようにする。
但し、#2882の修正が必要。


関連するチケット 3 (2件未完了1件完了)

関連している OpenPNE 3 - Bug(バグ) #2882: opValidatorDate で「年」に 0 を入力した場合に空値として認識されるWon't fix(対応せず)Yuya Watanabe2012-03-13

操作
関連している OpenPNE 3 - Backport(バックポート) #3287: sfValidatorDateで「年」に 0 を入力した場合に空値として認識されるNew(新規)2012-12-05

操作
関連している OpenPNE 3 - Backport(バックポート) #3282: sfValidatorDateで「年」に 0 を入力した場合に空値として認識されるNew(新規)2012-12-17

操作

他の形式にエクスポート: Atom PDF