Backport(バックポート) #1468
完了
opFormItemGenerator::generateValidator() の 数値用バリデータ生成時 ValueMax, ValueMin が 0の場合は 範囲指定されない
Shogo Kawahara さんが14年以上前に追加.
約14年前に更新.
説明
Overview¶
opFormItemGenerator::generateValidator() の 数値用バリデータ生成時 ValueMax, ValueMin が 0の場合は 範囲指定されない
再現手順
- 範囲が 0 〜 1 である数値プロフィール項目を作成。
- プロフィール編集で -1 を入力
- 正常にプロフィールが登録できてしまう。
対象
OpenPNE3.0.x 〜 OpenPNE3.7.x-dev
Causes¶
184 if ($field['ValueType'] === 'integer' || $field['FormType'] === 'date')
185 {
186 if (!empty($field['ValueMin']))
187 {
188 $option['min'] = $field['ValueMin'];
189 }
190 if (!empty($field['ValueMax']))
191 {
192 $option['max'] = $field['ValueMax'];
193 }
194 }
ValueMinおよびValueMax を empty() を利用して判定しているためです。
Way to fix¶
関連するチケット
1 (0件未完了 — 1件完了)
- 対象バージョン を OpenPNE 3.6beta4 から OpenPNE 3.6beta5 に変更
- ステータス を New(新規) から Accepted(着手) に変更
- 担当者 を tu nguyen ngoc にセット
- ステータス を Accepted(着手) から Pending Review(レビュー待ち) に変更
- 進捗率 を 0 から 50 に変更
- ステータス を Pending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
- 進捗率 を 50 から 70 に変更
http://redmine.openpne.jp/issues/1449#note-12 でこのバグチケットの確認中に発見した問題についてコメントしています。この問題については、コメントの通りこのチケットでは扱わないことにします。
問題ありません。
このチケットの確認中に now などの文字列が実際の日付に変換された上で DB に保存されてしまっているというバグを発見しました。これは実際には文字列として保存しておき、その文字列をバリデーションのために都度日付に直すのが正しい挙動です。このバグは #930 の 4e1f2665 の変更により混入したものと思われます。
このチケットでは日付の比較にも関わる変更がなされているので微妙なところですが、別のバグチケットを切って対処することにしましょう。
- ステータス を Pending Testing(テスト待ち) から Fixed(完了) に変更
- 進捗率 を 70 から 100 に変更
テストが終了しているので、ステータスを変更します。
他の形式にエクスポート: Atom
PDF