Forms 关于表单过滤器的问题
在前端,我有一个页面,旁边有一个列表和一个表单过滤器 显示社交网络的所有用户 我想在该列表中隐藏会话的用户。我怎么能 怎么办 我的第一个想法是为每个 字段,并在每个字段中添加如下行:Forms 关于表单过滤器的问题,forms,symfony1,doctrine,filter,Forms,Symfony1,Doctrine,Filter,在前端,我有一个页面,旁边有一个列表和一个表单过滤器 显示社交网络的所有用户 我想在该列表中隐藏会话的用户。我怎么能 怎么办 我的第一个想法是为每个 字段,并在每个字段中添加如下行: ->andWhere("u.id <> ?", $id) ->和何处(“u.id?”,$id) $id是当前会话的用户id。但是这样我 发现我在重复我自己 我该怎么办 首先,您需要让用户进入过滤器。您有两个选择: 在操作内实例化表单时,将用户id作为选项传入: public function
->andWhere("u.id <> ?", $id)
->和何处(“u.id?”,$id)
$id是当前会话的用户id。但是这样我
发现我在重复我自己
我该怎么办 首先,您需要让用户进入过滤器。您有两个选择: 在操作内实例化表单时,将用户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();
我更喜欢前一种方法,因为它更干净,也不太脏
获得用户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;
}