首先,您需要讓用戶進入過濾器。你有兩個選擇:
傳遞USER_ID作爲一個選項,當你實例的形式,動作裏面:
public function executeList(sfWebRequest $request)
{
$user_id = $this->getUser()->getUserId();
$filter = new ModelFormFilter(array(), array('user_id' => $user_id));
...
從上下文獲取表單內的用戶ID:
sfContext::getInstance()->getUser()->getUserId();
我更喜歡前一種方法,因爲它更乾淨,更少WTFy。
一旦你的用戶ID,覆蓋doBuildQuery
排除您FormFilter內的當前用戶ID:
protected function doBuildQuery(array $values)
{
$query = parent::doBuildQuery($values);
$user_id = $this->getOption('user_id'); //or off the context here
if ($user_id)
{
$query->addWhere('r.user_id != ?', $user_id);
}
return $query;
}