Project

General

Profile

Bug(バグ) #3486

sfValidatorBase::isEmptyにfalseが渡された場合にtrueにならない

Added by 誠二 天重 about 9 years ago. Updated almost 3 years ago.

Status:
New(新規)
Priority:
Normal(通常)
Assignee:
-
Target version:
Start date:
2013-11-15
Due date:
% Done:

0%

3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)

Description

概要

sfValidatorBase::isEmpty() に false が渡された場合に true にならない。

例えば opValidatorStirng では requried オプションが指定された場合には以下の箇所を通る。

    if ($this->isEmpty($clean))
    {
      if ($this->options['required'])
      {
        throw new sfValidatorError($this, 'required');
      }

      return $this->getEmptyValue();
    }

上記のコード中の $clean に対して false が渡された場合,if分岐がtrue判定されないため,この分岐自体が無視され,requriedオプションを指定していても例外が投げられない。

上記の問題は,具体的には以下のようなコードがあった場合に問題となる。

public function executeHoge(sfWebRequest $request)
{
  $validator = new opValidatorString(array('required' => true));
  $validator->clean($request['hoge']);
}

上記のコードでパラメータとして hoge をもっていない(hogeの値がnullやfalseだということではなくhogeがセットされていない)場合, $request['hoge'] には false が入っているため,opValidatorString が例外を投げない。
上記のコードを$request->getParameter('hoge')と変更すると,この場合には null が渡されるため例外が throw される。

History

#1 Updated by kaoru n almost 3 years ago

  • Target version set to OpenPNE 3.10.x

Also available in: Atom PDF