在奏鸣曲中添加具有多对一关系的实体

add entity inside other with many to one relation in sonata

我正在使用 Symfony 和奏鸣曲包,我有 2 个实体,它们与 ManyToOne/OneToMany 关系如下:

一个类别可以有多个子类别实体。为此,在 Sonata 的 FormMapper 中,当我添加一个新类别时,我想添加一个按钮来显示一个弹出窗口以创建多个 SubCategory .. 那么我如何覆盖 Sonata 的 Twig 来做到这一点?

类别管理员

class CategoryAdmin extends AbstractAdmin
{
    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper
            ->add('name')
            ->add('subcats', 'entity', array(
                'class'=> 'ProductBundle\Entity\SubCategory',
                'multiple' => true,
            ))
        ;
    } 
}

您可以通过添加以下内容来使用您的一个模板:

$formMapper
    ->add('name')
    ->add('subcats', 'entity', array(
        'class'=> 'ProductBundle\Entity\SubCategory',
        'multiple' => true,
        'attr' => array('template'=> 'your\path\to\twig')
    ))
 ;

并且此树枝应从 base_edit_form.html.twig

延伸
{% extends 'SonataAdminBundle:CRUD:base_edit_form.html.twig' %}
    {% block field %}

        <div>
            // put your code here
        </div>

    {% endblock %}

或者您有其他解决方案可以解决您的问题,您可以使用 Sonata_Type_Model

  ->add('subcats','sonata_type_model', array(
      'multiple' => true, 
      'by_reference' => false
  ))

此解决方案将为您提供一个您喜欢的按钮,用于添加和删除以创建您的子类别