在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'))
;
}
答案 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中不再使用。