1

查看这篇文章我相信这是可能的,但我不知道他是如何配置他的实体的。

Sonata Admin Bundle 类型集合定制

我的管理文件与他相同。但是这些其他帖子我发现奏鸣曲不支持此功能。

https://github.com/sonata-project/SonataAdminBundle/issues/262

https://github.com/sonata-project/SonataAdminBundle/issues/802

拜托,有人可以建议一些东西来解决它!

更新:(高拱门)

 .../SimBundle/Admin/EmpleadoAdmin.php
protected function configureFormFields(FormMapper $formMapper)
{
      $formMapper
        ->with('Tecnico')
           ->add('empleadoTecnico', 'sonata_type_collection'), 
                            array('edit' => 'inline','sortable'=>'pos','inline' => 'table'))
        ->end()
        ;

}

  .../SimBundle/Admin/TecnicoAdmin.php
protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('salarioHora',null,array('label'=>'Salario por hora:'))
        ->with('Experiencia')
        ->add('experienciaLaboral', 'sonata_type_collection', array('label'=>'Experiencia Laboral:'),
                                                 array('edit' => 'inline','sortable'=>'pos','inline' => 'table'))
        ->end()


        ;   
}

   .../SimBundle/Admin/EmpExperienciaLaboralAdmin.php
protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('nombreJefeInmediato',null,array('label'=>'Nombre Jefe Inmediato:'))      
        ;   
}

实体

...\SimBundle\Entity;

类 EmpEmpleado {

/**
 *
 * @ORM\OneToMany(targetEntity="Tecnico", mappedBy="idEmpleado", cascade={"all"}, orphanRemoval=true)
 *
 */
private $empleadoTecnico;

}

...\SimBundle\Entity;

技术类 {

/**
 * @var \EmpEmpleado
 *
 * @ORM\OneToOne(targetEntity="EmpEmpleado", inversedBy="empleadoTecnico")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="id_empleado", referencedColumnName="id")
 * })
 */
private $idEmpleado;

/**
 *
 * @ORM\OneToMany(targetEntity="EmpExperienciaLaboral", mappedBy="idEmpleado", cascade={"all"}, orphanRemoval=true)
 *
 */
private $experienciaLaboral;

}

...\SimBundle\Entity;

类 EmpExperienciaLaboral {

/**
 * @var \Tecnico
 *
 * @ORM\ManyToOne(targetEntity="Tecnico", inversedBy="experienciaLaboral")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="id_empleado", referencedColumnName="id")
 * })
 */
private $idEmpleado;

}

当我尝试添加 experienciaLaboral 时,它失败了:致命错误:调用非对象上的成员函数 getName()

架构如下所示:

EmpEmpleado --> (OneToMany) --> Tecnico --> (OneToMany) --> EmpExperienciaLaboral

(对不起,我不能放图片,这是我的第一个问题,我没有 10 个声誉)

4

1 回答 1

4

不,您不能嵌套集合...限制是由于 admin uniqid 的工作方式。唯一 id 用于避免共享同一管理员的元素之间的冲突。

现在 adminId 不是堆栈,您只有 adminId 和 childAdminId ...在您的情况下,您需要一个 childChildAdminId ...

于 2013-08-23T14:22:11.973 回答