SonataAdminBundle表单字段查询

时间:2011-11-07 13:59:09

标签: symfony symfony-sonata sonata-admin

在Admin类的SonataAdminBundle中,我无法创建orderBy on ManyToMany field

例如作者和书。作者可以有很多书,以及书可以有很多Autors。在上面的链接中写道,我可以使用表单字段的查询。所以我可以准备一个查询,选择作者并按名称加工。如何管理?如何在那里获取EntityManager以创建查询并通过查询选项传递它?

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

2 个答案:

答案 0 :(得分: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))        
    ;
}

答案 1 :(得分:2)

有什么变化吗?我使用这个来获得“课程不存在(500错误)”。

注意:它在Symfony 2.1中运行,但在Symfony 2.2中不再使用。