sexta-feira, 18 de fevereiro de 2011

Filtrar dados do componente sfWidgetFormDoctrineChoice

Uma dificuldade que sempre surge, é a de filtrar dados em um selectbox ou choice, você pode fazer alguma coisa depois de montado, mas também é possível passar uma query para um filtro direto na consulta ao banco.
Segue abaixo um exemplo.

Exemplo: 
$ativo = true;
$q = Doctrine_Query::create()
->from('Categoria a')
->orderBy('a.descricao')
->addWhere('a.ativo = ?', $ativo); 

$this->widgetShema['categoria_id'] new sfWidgetFormDoctrineChoice(
  array('label' => "Categoria",
 'model' => $this->getRelatedModelName('Categoria'),
 'add_empty' => '...selecione uam opção...', 'query' => $q
  )
); 

o item orderBy da nossa query também pode ser solicitado direto no componente( adicionando no array de atributos o atributo order_by=>array(campo1, campo2) ), mas como já estamos solicitando uma query específica, já trazemos ordenado da maneira que desejamos.


Abraço a todos.

3 comentários:

  1. Como eu posso fazer para que Liste nomes de categorias em sfWidgetFormDoctrineChoice e grave Id

    ResponderExcluir
  2. Como eu posso fazer para que Liste nomes de categorias em sfWidgetFormDoctrineChoice e grave Id

    ResponderExcluir
  3. Usei o exemplo que vc postou mais esta exibindo apenas o campo id no combobox com fazer para exibir o nome e salvar o id no BD

    ResponderExcluir