观看这篇文章我相信这是可能的,但我不知道他是如何配置他的实体的。
Sonata Admin Bundle Type Collection Customisation
我的管理员文件与他完全相同。但是这些其他帖子我发现奏鸣曲不支持这种能力。
https://github.com/sonata-project/SonataAdminBundle/issues/262
https://github.com/sonata-project/SonataAdminBundle/issues/802
拜托,有人可以提出一些建议来解决它!
更新:( Dour High Arch)
.../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;
类Tecnico {
/**
* @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时,它是faild: 致命错误:在
中的非对象上调用成员函数getName()Schema看起来像这样:
EmpEmpleado - > (OneToMany) - > Tecnico - > (OneToMany) - > EmpExperienciaLaboral
(对不起,我不能把图像,这是我的第一个问题,我没有10个声誉)
答案 0 :(得分:4)
不,你不能拥有嵌套集合......这个限制是由于admin uniqid的工作原理。唯一ID用于避免共享相同管理员的元素之间发生冲突。
现在adminId不是一个堆栈,你只有adminId和childAdminId ......在你的情况下你需要有一个childChildAdminId ......