Actions
Bug(バグ) #3486
opensfValidatorBase::isEmptyにfalseが渡された場合にtrueにならない
Start date:
2013-11-15
Due date:
% Done:
0%
Estimated time:
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 される。
Actions