5

在 Admin 类的 SonataAdminBundle 中,我无法在 ManyToMany 字段上进行 orderBy

例如作者和书籍。Author 可以有很多书,Book 可以有很多 Autors。在上面的链接中,我可以使用表单字段的查询。所以我可以准备一个查询来选择作者并按姓名对他们进行排序。如何管理这个?如何在那里获取 EntityManager 以创建查询并通过查询选项传递它?

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

2 回答 2

9

好的,我得到了它的工作:

/**
 * @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))        
    ;
}
于 2011-11-14T15:52:14.830 回答
2

有什么改变吗?通过使用它,我得到一个“类不存在(500 错误)”。

注意:它在 Symfony 2.1 中可以正常工作,但在 Symfony 2.2 中不再有效。

于 2013-03-20T14:02:04.220 回答