symfony usar o object_select_tag para retornar os valores ordenados
Esses tempos estava usando o object_select_tag (é uma mão na roda), mas precisava trazer os resultados em ordem crescente. Foi ae que eu descobri que existe uma opção peer_method onde é possível definir o método no model para retornar a lista de resultados.
Eu não curto o Propel, prefiro bem mais o Doctrine. Desta forma esse exemplo é baseado usando o Doctrine:
No template:
1 2 3 4 5 6 7 | <?php echo object_select_tag(isset($filters['Status']) ? $filters['Status'] : null, null, array ( 'include_blank' => true, 'related_class' => 'Status', 'text_method' => '__toString', 'control_name' => 'filters[Status]', 'peer_method' => 'getSorted' )) ?> |
No model StatusTable.class.php:
1 2 3 4 5 6 7 | public static function getSorted() { $q = new Doctrine_Query(); $q->from('Status')->orderBy('name ASC'); return $q->execute(); } |
No código acima que é possível definir a forma de ordenação e qual coluna que deve ser usada para ordenar.
Agora falta criar o método __toString no model Status.class.php:
1 2 3 4 | public function __toString() { return $this->name; } |
O método __toString e usado para imprimir os valores no combo box.
Pronto! ;-)