Например есть табличка с заказами Order, табличка с товарами Product и связующая табличка OrderProduct. В backend необходимо добавить возможность фильтрации по id заказа (странно что symfony сама не добавляет в фильтр id) и по названию товара в заказе.
Первым делом изменяем OrderFormFilter:
class OrderFormFilter extends BaseOrderFormFilter { public function configure() { $this->widgetSchema['id'] = new sfWidgetFormInput(); $this->validatorSchema['id'] = new sfValidatorInteger(array('required' => false)); $this->widgetSchema['prodname'] = new sfWidgetFormInput(); $this->validatorSchema['prodname'] = new sfValidatorString(array('required' => false)); } public function getFields() { $fields = parent::getFields(); $fields['id'] = 'Number'; $fields['prodname'] = 'Text'; return $fields; } public function addIdColumnQuery(Doctrine_Query $query, $field, $value) { $query->andWhere('r.id = ? ', $value); } public function addProdnameColumnQuery(Doctrine_Query $query, $field, $value) { $query->leftJoin('r.Products p')->andWhere('p.name LIKE ?', "%$value%"); } }
Теперь нужно добавить новые поля в generator.yml:
filter: display: [ id, prodname, ..... ]