我似乎无法弄清楚将表格嵌入在一起的方式,我曾使用this SO问题尝试接近,但得到的只是内存不足错误。
关于创建买方,我想同时添加联系人。我看到了一些复选框示例,但我想要输入字段,并且联系人可能不存在。
[联系人也可以作为他们可能属于不同买方/卖方的任何联系人的常规存储库。
/** * * @ORM\Table(name="buyer") * @ORM\Entity */ class Buyer { /** * @var int * * @ORM\Column(name="id", type="integer", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ private $id; /** * @var string * * @ORM\Column(name="name", type="string", length=30, nullable=false) */ private $name; /** * @var string|null * * @ORM\Column(name="address", type="string", length=60, nullable=true) */ private $address; /** * @var string|null * * @ORM\Column(name="city", type="string", length=60, nullable=true) */ private $city; /** * @var string|null * * @ORM\Column(name="state", type="string", length=20, nullable=true) */ private $state; /** * @var int|null * * @ORM\Column(name="zip", type="integer", nullable=true) */ private $zip; /** * @ORM\OneToMany(targetEntity="App\Entity\BuyerContact", mappedBy="buyer") */ protected $contacts; public function __construct() { $this->contacts = new ArrayCollection(); } ...
/** * * @ORM\Table(name="buyer_contact", indexes={@ORM\Index(name="fk_buyer", columns={"buyer"}), @ORM\Index(name="fk_contact", columns={"contact"})}) * @ORM\Entity */ class BuyerContact { /** * @var int * * @ORM\Column(name="id", type="integer", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ private $id; /** * @var Buyer * * @ORM\ManyToOne(targetEntity="App\Entity\Buyer", inversedBy="contacts") * @ORM\JoinColumns({ * @ORM\JoinColumn(name="buyer", referencedColumnName="id") * }) */ private $buyer; /** * @var Contact * * @ORM\ManyToOne(targetEntity="App\Entity\Contact") * @ORM\JoinColumns({ * @ORM\JoinColumn(name="contact", referencedColumnName="id") * }) */ private $contact; ...
/** * * @ORM\Table(name="contact") * @ORM\Entity */ class Contact { /** * @var int * * @ORM\Column(name="id", type="integer", nullable=false) * @ORM\Id * @ORM\GeneratedValue(strategy="IDENTITY") */ private $id; /** * @var string|null * * @ORM\Column(name="job_title", type="string", length=30, nullable=true) */ private $jobTitle; /** * @var string|null * * @ORM\Column(name="name", type="string", length=60, nullable=true) */ private $name; /** * @var string|null * * @ORM\Column(name="email", type="string", length=120, nullable=true) */ private $email;
class BuyerType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('buyer', TextType::class,[ 'required'=>true, 'label'=>'Buyer', 'help'=>'The business name of the buyer' ]) ->add('address', TextType::class, [ 'required'=>false, 'label'=>'Address 1', 'help'=>'Address line one.' ]) ->add('city', TextType::class, [ 'required'=>false, 'label'=>'City', ]) ->add('state', TextType::class,[ 'required'=>false, 'label'=>'State', ]) ->add('zip', NumberType::class, [ 'required'=>false, 'label'=>'Zip', ]) ; } public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ 'data_class' => Buyer::class, ]); } }
class BuyerContactType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('buyer') ->add('contact') ; } public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ 'data_class' => PublisherContact::class, ]); } }
我似乎无法弄清楚将表单嵌入在一起的方式,我已经使用了这个SO问题来尝试接近,但是我得到的只是内存不足错误。在创建买方时,我想添加...
如果我正确理解您想要的是嵌入表单字段:
这是我的错误,因为实体是为现有应用程序生成的。我要做的就是配置买方与联系人之间的ManyToMany单向关系,一切都会按预期进行。