1

この投稿を見て、それは可能だと思いますが、彼がエンティティをどのように構成したかはわかりません。

Sonata Admin バンドル タイプ コレクションのカスタマイズ

私は彼と同じ管理者ファイルを持っています。しかし、これらの他の投稿では、この機能がソナタではサポートされていないことがわかりました。

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;

クラステクニコ{

/**
 * @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

いいえ、コレクションをネストすることはできません...制限は、管理者のuniqidの仕組みによるものです。一意の ID は、同じ管理者を共有する要素間の衝突を避けるために使用されます。

今のところ、adminId はスタックではありません。adminId と childAdminId しかありません...この場合、childChildAdminId が必要です...

于 2013-08-23T14:22:11.973 に答える