检索过滤器内的用户信息

时间:2012-09-14 08:54:02

标签: php symfony-1.4

是否可以在symfony 1.4中的过滤器内检索用户信息?

我知道在一个动作中我可以打电话

$this->getUser()

在模板中我使用

$sf_user

但我怎么能在过滤器中做?

2 个答案:

答案 0 :(得分: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();
  }
}

答案 1 :(得分: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()));

如果您使用 admin generator ,则可以通过覆盖生成器配置类的getFilterFormOptions方法来传递用户。

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

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

  // ...
}
相关问题
最新问题