如何更改symfony管理过滤器的选项

时间:2011-05-16 17:28:13

标签: symfony1 symfony-1.4

我有一个名为ImportBundle的表/类。 ImportBundle有一个active标志,可以设置为1或0。

在我的一个管理页面上,我有一个显示数据库中所有ImportBundle的选择字段。我想只看到活跃的那些。

如何更改此内容?

2 个答案:

答案 0 :(得分:1)

是否要更改默认活动值,删除活动字段或更改基本查询?

设置默认

getFilterDefaults添加ImportBundleGeneratorConfiguration方法:

public function getFilterDefaults()
{
  return array('active' => true);
}

删除字段

ImportBundleFormFilter中的过滤器取消设置字段,或更改display generator.yml标题下的filter选项。如果在其他地方使用ImportBundleFormFilter,则可能需要对其进行扩展以取消设置字段。

更改查询

在generator.yml或过滤器本身设置table_method选项。查看更多说明here

答案 1 :(得分:0)

如果您的select字段是sfWidgetFormDoctrineChoice,那么您应该设置table_method选项。

例如,如果您的模型具有与“相关”的多对多关系:

class ModelFormFilter extends BaseModelFormFilter
{
  public function configure()
  {
    $this->getWidget('related_list')->setOption('table_method', 'getActive');
  }
}

class RelatedTable extends Doctrine_Table
{  
  public function getActive()
  {
    return $this->createQuery('r')
      ->where('r.is_active = ?', true)
      ->execute();
  }
}