Symfony1 symfony过滤器的附加条件

Symfony1 symfony过滤器的附加条件,symfony1,filter,symfony-1.4,criteria,pager,Symfony1,Filter,Symfony 1.4,Criteria,Pager,我正在做一个symfony项目来管理一个数据库。首先,我解释它是如何工作的: 在数据库中,所有元素都与唯一的元素“场景”关联。当用户访问应用程序时,选择他希望看到的场景(它将该场景保存在用户参数中)。因此,在列出元素时,应用程序应该只列出与用户选择的场景相关联的元素 *注意:所有元素在表定义中都有一个场景属性 所以我的问题来了: 我使用sfPropelPager类的帮助开发了一个元素实体列表来分页。还添加了一些要在列表中搜索的过滤器,为此我使用了symfony提供的过滤器系统(FormFilte

我正在做一个symfony项目来管理一个数据库。首先,我解释它是如何工作的:

在数据库中,所有元素都与唯一的元素“场景”关联。当用户访问应用程序时,选择他希望看到的场景(它将该场景保存在用户参数中)。因此,在列出元素时,应用程序应该只列出与用户选择的场景相关联的元素

*注意:所有元素在表定义中都有一个场景属性

所以我的问题来了:

我使用sfPropelPager类的帮助开发了一个元素实体列表来分页。还添加了一些要在列表中搜索的过滤器,为此我使用了symfony提供的过滤器系统(
FormFilter.class.php
等等)

现在,我希望列表不显示除用户选择的场景之外的其他场景中的元素

如何向筛选器类给定的条件添加其他条件? 或者你会如何解决这个问题

这是我的行动代码: *注意:下面提到的“场景”是代码中的Escenario


非常感谢您抽出时间

我解决了这个问题。问题是,在填充筛选器之前,我将formfilter生成的条件分配给了我的条件变量。这就是错误的原因

由此产生的代码是:

  public function executeUnidadfilter(sfWebRequest $request){
    $this->filter = new BaUnidadorganizativaTblFormFilter();
    $this->filter->bind($request->getParameter($this->filter->getName()));
    if($this->filter->isValid()){
        $this->pager = new sfPropelPager('BaUnidadorganizativaTbl',$this->sfPropelPagerLines);
        $esc = $this->getUser()->getEscenario();
        $c = new Criteria();
        $c = $this->filter->getCriteria();
        $c->addAnd('codigo_escenario',$esc);
        $this->pager->setCriteria($c);
        $this->pager->init();
    }else{
        $this->pager = new sfPropelPager('BaUnidadorganizativaTbl',$this->sfPropelPagerLines);
        $this->pager->setCriteria($this->filter->getCriteria());
        $this->pager->init();
    }
    $this->message=null;
    $this->messageType=null;
    $this->setTemplate('Unidadlist');
 }

您可以发布用于列出项目的action executeIndex吗?由于我要筛选的变量是筛选表的一个字段,因此可以为该字段添加一个小部件,并以某种方式指定一个作为参数的值(不可更改)。我正在阅读您的帖子。很高兴听到你解决了这个问题!
  public function executeUnidadfilter(sfWebRequest $request){
    $this->filter = new BaUnidadorganizativaTblFormFilter();
    $this->filter->bind($request->getParameter($this->filter->getName()));
    if($this->filter->isValid()){
        $this->pager = new sfPropelPager('BaUnidadorganizativaTbl',$this->sfPropelPagerLines);
        $esc = $this->getUser()->getEscenario();
        $c = new Criteria();
        $c = $this->filter->getCriteria();
        $c->addAnd('codigo_escenario',$esc);
        $this->pager->setCriteria($c);
        $this->pager->init();
    }else{
        $this->pager = new sfPropelPager('BaUnidadorganizativaTbl',$this->sfPropelPagerLines);
        $this->pager->setCriteria($this->filter->getCriteria());
        $this->pager->init();
    }
    $this->message=null;
    $this->messageType=null;
    $this->setTemplate('Unidadlist');
 }