プロジェクト

全般

プロフィール

Backport(バックポート) #3725

未完了

opMemberProfileSearchForm に 未定義の変数が使用されている

isao sano さんが約10年前に追加. ほぼ10年前に更新.

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

0%

予定工数:

説明

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 に修正
        }
      }
    }
  }

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

コピー元 OpenPNE 3 - Bug(バグ) #3587: opMemberProfileSearchForm に 未定義の変数が使用されているNew(新規)2014-04-08

操作

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