1) configure function Add an input for each field you want to include in your filter 代码如下: $this->widgetSchema['name'] = new sfWidgetFormFilterInput(array('with_empty' => false)); $this->validatorSchema['name'] = new sfValidatorPass(array('required' => false));
2) add a query modification when filtering for that field I've done it for Doctrine. Pay atention to the method name addFIELDColumnQuery. 代码如下: public function addNameColumnQuery(Doctrine_Query $query, $field, $values) { if (is_array($values) && isset($values['text']) && '' != $values['text']) { $query->leftJoin('r.Translation t') // ->andWhere('t.lang = ?', $especify_one_language) // or it will search in all of them ->andWhere('CONCAT(t.name, t.shortname) like ?', '%' . $values['text'] . '%'); } }
3) Add your searching fields
代码如下: public function getFields() { return parent::getFields() + array('name' => 'Text'); }