操作
Bug(バグ) #3587
未完了opMemberProfileSearchForm に 未定義の変数が使用されている
開始日:
2014-04-08
期日:
進捗率:
0%
予定工数:
3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)
説明
Overview (現象)¶
opMemberProfileSearchFormのconfigure()をカスタマイズし、
nameのValidatorをopValidatorSearchQueryStringから、sfValidatorPassなどValidator::doClean()の戻り値が配列ではないものを指定する。
(44行目)
$validators += array('name' => new opValidatorSearchQueryString(array('required' => false)));
↓
$validators += array('name' => new sfValidatorPass());
上記カスタマイズを施したformを利用して検索を行うとnameでの絞り込み検索が機能しなくなる。
また、以下の様なNoticeエラーが出る。
PHP Notice: Undefined variable: values in /XXX/lib/form/searchForm/opMemberProfileSearchForm.class.php on line 104
Causes (原因)¶
opMemberProfileSearchForm::addNameColumnQuery()において、未定義の $values が利用されているため。
protected function addNameColumnQuery(Doctrine_Query $query, $value) { if (!empty($value)) { if (is_array($value)) { foreach ($value as $v) { $query->andWhereLike('name', $v); } } else { if (!empty($value)) { $query->andWhereLike('name', $values); // ← 未定義 } } } }
h3. Way to fix (修正内容)
$values を正しい変数 $value に変更する
protected function addNameColumnQuery(Doctrine_Query $query, $value) { if (!empty($value)) { if (is_array($value)) { foreach ($value as $v) { $query->andWhereLike('name', $v); } } else { if (!empty($value)) { $query->andWhereLike('name', $value); // ← $value に修正 } } } }
操作