1-私はエンティティを持っています:
従業員医療サービス
/**
* @ORM\Entity
* @ORM\Table(name="employee_medical_file")
*/
class EmployeeMedicalService extends BaseEntity
{
//
// Some
// Fields
//
/**
* @Assert\NotBlank
* @ORM\ManyToOne(targetEntity="PersonnelBundle\Entity\Lookup\Lookup")
* @ORM\JoinColumn(name="medical_service_id", referencedColumnName="id")
*/
private $medicalService;
//
// getters
// & setters
//
2- 別のエンティティ:
調べる
/**
* @ORM\Entity
* @ORM\Table(name="lookup")
* @UniqueEntity(fields="name")
*/
class Lookup extends BaseEntity
{
// const ...
const TYPE_MEDICAL_SERVICE = 'medical_service';
// more constants ...
public function __construct($type)
{
$this->type = $type;
}
//
// Some Fields
//
/**
* @var string
* --stuff--
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="type", type="string", length=50)
* @Assert\NotBlank
*/
private $type;
//getters
// &setters
今では
従業員医療サービス管理者
protected function configureFormFields(\Sonata\AdminBundle\Form\FormMapper $formMapper)
{
$msquery = $this->getModelManager()
->getEntityManager('PersonnelBundle:Lookup\Lookup')
->createQueryBuilder();
$msquery->select('l')->from('PersonnelBundle:Lookup\Lookup', 'l')->where('l.type = :type')
->orderBy('l.name', 'ASC')
->setParameter('type', 'medical_service');
$formMapper
->add(..)
->add('medicalService', 'sonata_type_model', array(
'label' => 'personnel.employee.medical_service.form.medical_service',
'property' => 'name',
'placeholder' => '',
'required' => false,
'query' => $msquery,
))
->add(..)
;
}
** 私の問題: **
EmployeeMedicalService 管理フォーム内から新しいルックアップ (医療サービス) を追加するためのフォームが必要です。フィールドタイプの値を「medical_service」に設定してプリロードする必要があります。EmployeeMedicalService管理フォーム内から新しい医療サービスを追加しようとすると、または新しいTypeがNULLに設定されている場合、値なしでルックアップが追加されます
これは
ルックアップ管理者
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('name', 'text', array(
'label' => 'personnel.lookup.form.name'
))
->add('type', 'hidden', array(
'label' => 'personnel.lookup.form.type',
))
;
}