【问题标题】:Symfony 1.4 - How to use backend-filters in table_method?Symfony 1.4 - 如何在 table_method 中使用后端过滤器?
【发布时间】:2012-09-26 22:07:22
【问题描述】:

我想在我的 table_method 中使用自定义过滤器来扩展查询。不幸的是,我不知道如何从方法中访问该字段的值。我正在使用 SF 1.4 /w Doctrine 1.2

【问题讨论】:

  • 如果您的意思是向过滤器表单添加自定义字段,您应该阅读例如this.
  • 是的,这基本上就是我所做的。但过滤器不会自动应用于列表。因此,我想使用自定义过滤器字段中的值修改列表查询。我不知道如何从 table_method 中访问这个值。
  • 您可以在过滤表单类中设置字段的默认值或使用生成器配置类中的getFilterDefaults()函数为过滤表单设置默认值(返回一个类似array('field_name' => 'default_value')的数组)。过滤器将自动应用于操作类的buildQuery() 方法中的基本查询。您可能需要清除会话才能使其生效。

标签: php symfony1 symfony-1.4 filtering


【解决方案1】:

我认为您必须更改 doBuildQuery filterForm 方法。

在任何 filterForm 类中你都可以这样做:

public doBuildQuery(array $values) {
    $q = parent::doBuildQuery($values);

    if($values['....']) ... {
       $q->addWhere($q->getRootAlias().".column = ?",$values['...']);
    }

    return $q; 
}

此方法是从后端生成的模块中自动调用的方法。如果要添加另一个小部件,请在 configure() 方法中进行,然后在 doBuildQuery() 中处理值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 2011-04-15
    • 2023-03-15
    • 1970-01-01
    • 2018-05-15
    相关资源
    最近更新 更多