gpt4 book ai didi

php - symfony 过滤器将行为从 [field=value] 更改为 [field LIKE %value%]

转载 作者:行者123 更新时间:2023-11-29 14:38:23 25 4
gpt4 key购买 nike

在我的过滤器中,字段的行为是在数据库表中搜索字段值等于与过滤表单中提供的值的行。我想更改其行为,以在数据库表中搜索字段值与表单中提供的字段值匹配的行(%LIKE%)。

我知道可以通过向过滤器类添加 addFieldnameColumnQuery 方法来完成,但我想知道的是,还有其他方法吗?

该字段恰好是外键,我希望它像普通文本字段一样工作。

更新:这是一个愚蠢的错误。我需要将 sfWidgetFormFilterInput 分配给 widgetSchema,但我使用的是 sfWidgetFormInput,这导致它寻找相等而不是匹配。

最佳答案

我从未听说过其他方式...看看 sfFormFilterDoctrine类位于lib\vendor\symfony\lib\plugins\sfDoctrinePlugin\lib\form了解该系统的工作原理以及如何编写 addFieldnameColumnQuery

更新要仅更改字段的过滤器行为,请说 myfield ,从外键到普通文本,您只需设置小部件并覆盖 getFields()MymoduleFormFilter带有如下代码的类:

  public function configure()
{
$this->setWidget('myfield', new sfWidgetFormFilterInput());
$this->setValidator('myfield', new sfValidatorPass(array('required' => false)));
}

public function getFields()
{
$fields = parent::getFields();
$fields['myfield'] = 'Text';
return $fields;
}

相反,如果您定义要在连接表中搜索的字段,则尚未根据您在generator.yml中编写的字段名称设置小部件

filter:
display: [... some fields ..., myfield]

最后添加 addMyfieldColumnQuery(Doctrine_Query $query, $field, $values) with 位于 joinwhere 代码中。抱歉,没有此片段,因为我使用 Propel。

关于php - symfony 过滤器将行为从 [field=value] 更改为 [field LIKE %value%],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8503938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com