在 Symfony 6 中,我有一個用個人資料(姓名、姓氏等)MappedSuperclass呼叫的物體。Person
#[ORM\MappedSuperclass]
class Person
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private $id;
#[ORM\Column(type: 'string', length: 180)]
private $name;
#[ORM\Column(type: 'string', length: 255)]
private $surnames;
}
而且我有許多從那個擴展而來的物體,Owner,Client并Visitor具有自己的屬性,例如:
#[ORM\Entity()]
class Owner extends Person
{
#[ORM\OneToOne(inversedBy: 'owner', targetEntity: User::class, cascade: ['persist', 'remove'])]
private $user;
#[ORM\Column(type: 'boolean')]
private $isExternal = false;
}
我的問題是,我可以只創建一次 Person FormType 并以某種方式將其嵌入到OwnerFormType,ClientFormType和中VisitorFormType嗎?
我知道我可以為它創建一個 FormTypePerson并從資料中單獨訪問它,保存這些欄位然后完成Owner或以另一種形式完成,但這會導致必填欄位出現問題,別名它不是一個優雅的解決方案。ClientOwnerClient
uj5u.com熱心網友回復:
首先,您必須創建一個表單 PersonType。然后創建您的表單 OwnerType、VisitorType 等... 在子類的構建器中,您可以創建 PersonType 表單。
$builder
->add('user')
->add('isExternal')
->add('person', PersonType::class, ['data_class' => Owner::class]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/497736.html
