我正在开发一个symfony项目来管理数据库。首先,我解释它是如何工作的:
在数据库中,所有元素都与唯一元素“场景”相关联。当用户访问应用程序时,选择他想要查看的场景(将其保存在用户参数中)。因此,在列出元素时,应用程序应仅列出与用户选择的场景关联的元素。
*注意:所有元素在表定义中都有一个场景属性。
所以我的问题来了:
我使用sfPropelPager类的帮助开发了一个元素实体列表来进行分页。还添加了一些过滤器以在列表中搜索,为此我使用了symfony(<element>FormFilter.class.php
和stuff)提供的过滤系统。
现在我希望列表不显示除用户选择之外的其他场景中的元素。
如何为过滤器类提供的条件添加其他条件? 或者你会如何解决这个问题?
public function executeUnidadfilter(sfWebRequest $request){
$this->filter = new BaUnidadorganizativaTblFormFilter();
$c = $this->filter->getCriteria();
$this->filter->bind($request->getParameter($this->filter->getName()));
if($this->filter->isValid()){
$this->pager = new sfPropelPager('BaUnidadorganizativaTbl',$this->sfPropelPagerLines);
echo $this->getUser()->getEscenario();
$this->pager->setCriteria($c);
$this->pager->init();
}else{
$this->pager = new sfPropelPager('BaUnidadorganizativaTbl',$this->sfPropelPagerLines);
$this->pager->init();
}
$this->setTemplate('Unidadlist');
}
*注意:下面提到的'场景'是代码中的Escenario
非常感谢你的时间
答案 0 :(得分:0)
我解决了这个问题。麻烦的是我将formfilter生成的标准分配给我的标准var在过滤器填充之前。这就是错误的原因。
结果代码是:
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');
}