SonataAdminBundle запрос поля формы - PullRequest
5 голосов
/ 07 ноября 2011

В SonataAdminBundle в классе Admin я не могу сделать orderBy в поле ManyToMany .

Например, Автор и Книга.Автор может иметь много книг, а Книга может иметь много авторов.В ссылке выше написано, что я могу использовать запрос для поля формы.Так что я мог бы подготовить запрос, который бы выбирал авторов и сортировал их по имени.Как это сделать?Как получить EntityManager для того, чтобы создать запрос и передать его через опцию запроса?

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('name','text')
        ->add('author', 'sonata_type_model', array('query' => ....), array('edit' => 'inline'))
    ;
}

Ответы [ 2 ]

9 голосов
/ 14 ноября 2011

ОК, у меня все получилось:

/**
 * @param \Sonata\AdminBundle\Form\FormMapper $formMapper
 * @return void
 */
protected function configureFormFields(FormMapper $formMapper)
{
    $entity = new \MyCompany\MyProjectBundle\Entity\Seria();
    $query = $this->modelManager->getEntityManager($entity)->createQuery('SELECT s FROM MyCompany\MyProjectBundle\Entity\Seria s ORDER BY s.nameASC');

    $formMapper
        ->add('title', 'text')
        ->add('seria', 'sonata_type_model', array('required' => true, 'query' => $query), array('edit' => 'standard'))
        ->add('description', 'textarea',
               array('attr' => array('class' => 'tinymce'), 'required' => false))        
    ;
}
2 голосов
/ 20 марта 2013

Что-нибудь изменилось по этому поводу?я получаю «класс не существует (ошибка 500)» с помощью этого.

Примечание: он работал в Symfony 2.1, но больше не в Symfony 2.2.

...