Ordenando combo ManyToOne com ZF2 Form e Doctrine

Bom dia pessoal!

Uma coisa muito comum em cadastros é termos um combo (select) com outra entidade, por exemplo um cadastro de usuário e um combo com os grupos para determinar a qual grupo o usuário pertence.

Se você usa ZF2 Forms, Doctrine 2 e Annotations, existe uma maneira rápida de fazer isso apenas nas Annotations, sem precisar de código, trigger, etc.

//Na entidade Usuário:

/**
* @ORM\ManyToOne(targetEntity="Grupo\Entity\Grupo", inversedBy="usuarios")
* @ORM\JoinColumn(nullable=false)
* @Annotation\Options({"label":"Grupo", "target_class":"Grupo\Entity\Grupo","find_method":{"name":"findBy","params":{"criteria":{}, "orderBy":{"nome":"ASC"}}}})
* @Annotation\Type("DoctrineModule\Form\Element\ObjectSelect")
*/
private $grupo;

Pronto, agora ao criar a form do Usuário com o AnnotationBuilder o combo de Grupos aparece ordenado pelo nome:

$usuario = new Usuario();
$builder = new AnnotationBuilder();
$form    = $builder->createForm($usuario);

Uma dica rápida e que economiza algumas horas e linhas de código!

Abraços,

Leandro Silva

Deixe uma resposta

This site uses Akismet to reduce spam. Learn how your comment data is processed.