0

symfony 1.4 でフィルター内のユーザー情報を取得することは可能ですか?

アクションで呼び出すことができることを知っています

$this->getUser()

そして、私が使用するテンプレートで

$sf_user

しかし、フィルターでどのように行うことができますか?

4

2 に答える 2

2

いい練習:

実際に:

 $this->formFilter= new YourFormFilter(array(), array('user' => $this->getUser()));

フォームフィルタークラスで:

class YourFormFilter extends BaseYourFormFilter{

 public function configure(){

    $user = $this->getOption('user')
  }
}

悪い習慣:

フォームフィルタークラスで:

class YourFormFilter extends BaseYourFormFilter{

  public function configure(){

    $user = sfContext::getInstance()->getUser();
  }
}
于 2012-09-14T09:33:54.000 に答える
2

フィルターにユーザー オプションを追加し、それを介してユーザー オブジェクトを渡す必要があります。

フィルター クラスで:

public function configure()
{
  $this->user = $this->getOption('user');

  if (!$this->user instanceof sfBasicSecurityUser)
  {
    throw new InvalidArgumentException('A user object is required as "user" option in ' . __METHOD__);
  }

  //...
}

アクションで:

$this->filter = new YourFilter(array(), array('user' => $this->getUser()));

管理ジェネレーターを使用している場合getFilterFormOptionsは、ジェネレーター構成クラスのメソッドをオーバーライドしてユーザーを渡すことができます。

class yourGeneratorConfiguration extends BaseYourGeneratorConfiguration
{
  /**
   * @return sfBasicSecurityUser
   */
  public function getUser()
  {
    return sfContext::getInstance()->getUser();
  }

  public function getFilterFormOptions()
  {
    return array('user' => $this->getUser());
  }

  // ...
}
于 2012-09-14T09:40:55.080 に答える