symfony 1.4 でフィルター内のユーザー情報を取得することは可能ですか?
アクションで呼び出すことができることを知っています
$this->getUser()
そして、私が使用するテンプレートで
$sf_user
しかし、フィルターでどのように行うことができますか?
symfony 1.4 でフィルター内のユーザー情報を取得することは可能ですか?
アクションで呼び出すことができることを知っています
$this->getUser()
そして、私が使用するテンプレートで
$sf_user
しかし、フィルターでどのように行うことができますか?
いい練習:
実際に:
$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();
}
}
フィルターにユーザー オプションを追加し、それを介してユーザー オブジェクトを渡す必要があります。
フィルター クラスで:
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());
}
// ...
}