gpt4 book ai didi

php - Symfony 嵌入多​​个表格的集合

转载 作者:搜寻专家 更新时间:2023-10-31 21:00:21 25 4
gpt4 key购买 nike

我有 3 个表/实体。我正在尝试创建表单以将数据以一种形式保存到所有 3 个表。实体太长,这就是我没有在此处添加的原因。

实体客户端我在客户端实体中为其他 2 个实体创建了一个数组集合。

    protected $Clientservice;
protected $Hostingaccount;

public function __construct()
{
$this->Clientservice = new ArrayCollection();
$this->Hostingaccount= new ArrayCollection();
}
public function getClientservice()
{
return $this->Clientservice;
}
public function getHostingaccount()
{
return $this->Hostingaccount;
}

public function setClientservice($Clientservice)
{
$this->Clientservice = $Clientservice;

return $this;
}
public function setHostingaccount($Hostingaccount)
{
$this->Hostingaccount = $Hostingaccount;

return $this;
}

我有 3 种形式:

public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('CustomerID',IntegerType::class)
->add('Sex',TextType::class)
->add('Name',TextType::class)
->add('FirstName',TextType::class)
->add('LastName',TextType::class)
->add('Email', EmailType::class)
->add('Invoiceemail', EmailType::class)
->add('Iban', TextType::class)
->add('Bic', TextType::class)
->add('SEPAMandateID', TextType::class)
->add('LogoUrl', TextType::class)
->add('CreationDate', DateType::class)
->add('Clientservice', CollectionType::class, array(
'entry_type' => WhmAdminClientserviceType::class
))
->add('Hostingaccount', CollectionType::class, array(
'entry_type' => WhmAdminHostingAccountType::class
))
->getForm();

}

public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => Client::class
));
}

客户服务表格

    public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('Description',TextType::class);

}

public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => Clientservice::class
));
}

托管帐户表格:

public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('Domain',TextType::class)
->add('Domainip',IntegerType::class)
->add('UserName',TextType::class)
->add('Owner',TextType::class);

}

public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => Hostingaccount::class
));
}

在我的 Controller 中我有这样的代码:

 public function AddWhmAdminAction(Request $request)
{

$Client = new Client();

$form = $this->createForm(WhmAdminType::class, $Client);
$form->add('submit', SubmitType::class, array(
'label' => 'Create',
'attr' => array('class' => 'btn btn-default pull-left')
));
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {

$em = $this->getDoctrine()->getManager();

$em->persist($Client);
$em->flush();

$this->get('session')->getFlashBag()->add('green', 'Product created!');
return $this->redirectToRoute('whmAdmin');
// flash msg
}
//return $form->createView();
$build['form'] = $form->createView();
return $this->render('whm/WhmAdminForm.html.twig', $build);

}

在我看来

{{ form_start(form) }}

{% for flashMessage in app.session.flashbag.get('green') %}

{{ flashMessage }}

{% endfor %}


{{ form_end(form) }}

我关注了http://symfony.com/doc/current/form/form_collections.html这就是我的进展。我的表格只显示来自客户的字段。它不显示来自 Clientservice 和 hostingaccount 的字段。我如何以与客户相同的形式显示来自 clientservice 和 hostingaccount 的字段。

最佳答案

如果 ClientserviceHostingaccount 是 OneToOne 或 ManyToOne 关系,则更改:

->add('Clientservice', CollectionType::class, array(
'entry_type' => WhmAdminClientserviceType::class
))
->add('Hostingaccount', CollectionType::class, array(
'entry_type' => WhmAdminHostingAccountType::class
))

到:

->add('Clientservice', WhmAdminClientserviceType::class)
->add('Hostingaccount', WhmAdminHostingAccountType::class)

否则请离开您的表单构建器并阅读有关 adding and removing items 的信息集合类型。

关于php - Symfony 嵌入多​​个表格的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44457429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com