Adicionando um filtro customizado no admin generator (symfony 1.2)

Tenho uma tabela (1-N) que possui diversos telefones relacionados.

config/schema.yml:


imovel:
  id:
  ()
  created_at:

imovel_telefone:
  id:
  imovel_id:
  telefone:   varchar(20)
  created_at:
 

No admin generator, será necessário criar um filtro customizado, porque o telefone não faz parte da tabela imovel. Para isso, vamos alterar o arquivo lib/filter/ImovelFormFilter.class.php


class ImovelFormFilter extends BaseImovelFormFilter
{
  public function configure() {
     $this->widgetSchema[‘telefone’] = new sfWidgetFormInput();
     $this->validatorSchema[‘telefone’] = new sfValidatorPass(array(‘required’ => false));
  }

  public function getFields() {
    return array_merge(array(‘telefone’ => ‘Telefone’), parent::getFields());
  }

  protected function addTelefoneColumnCriteria(Criteria $criteria, $field, $values) {
    $criteria->addJoin(ImovelPeer::ID, TelefoneImovelPeer::IMOVEL_ID, Criteria::LEFT_JOIN);
    $criteria->add(TelefoneImovelPeer::TELEFONE, $values);
  }
}
 

Para finalizar, altere o generator.yml do seu backend e adicione o field telefone.


filter:
  fields:
    display:  [ telefone, campo1, campo2 ]