在我的过滤器中,字段的行为是在数据库表中搜索具有字段equal
值的行到过滤表单中提供的值。我想更改其行为以在DB表中搜索具有与表单(%LIKE%
)中提供的字段值匹配的行/行。
我知道可以通过向过滤器类添加addFieldnameColumnQuery
方法来完成,但我想知道的是,还有另外一种方法吗?
该字段恰好是外键,我希望它像普通文本字段一样工作。
更新:这是一个愚蠢的错误。我需要为widgetSchema分配一个sfWidgetFormFilterInput,但我使用的是sfWidgetFormInput,它导致它寻找相等而不是匹配。
答案 0 :(得分:1)
我从未听说过另一种方式...查看位于sfFormFilterDoctrine
的{{1}}课程,了解此系统的工作原理以及如何编写lib\vendor\symfony\lib\plugins\sfDoctrinePlugin\lib\form
<强>更新强>
要仅将字段的过滤器行为(例如addFieldnameColumnQuery
)从外键更改为普通文本,您只需设置窗口小部件并覆盖myfield
在getFields()
类中包含如下代码:
MymoduleFormFilter
相反,如果你定义一个字段来搜索连接表,你还没有根据你在generator.yml中写的字段名来设置小部件
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;
}
最后在 join 和 where 代码中添加filter:
display: [... some fields ..., myfield]
。对不起,没有任何代码片段,因为我使用的是Propel。