gpt4 book ai didi

forms - Symfony3 多次渲染相同的表单

转载 作者:行者123 更新时间:2023-12-05 00:56:23 24 4
gpt4 key购买 nike

我想多次渲染同一个表单为两个不同的选项卡处理相同的操作。
问题是当我尝试时,只显示第一个选项卡的形式,如果我更改 id 和 姓名 的形式。
我发现这是 symfony 的预期行为,但我仍然需要它来工作。

我发现它可能适用于集合,但不知道它是如何工作的。

枝条:

{{ form(contactForm, {'attr': {'id': 'contactFormId' ~ Client.Id}, 'name': "contactFormName" ~ Client.Id})}}

形式:
$this->contactForm = $this->createFormBuilder($contact, array('allow_extra_fields' =>true))
->add('Nom', TextType::class, array('mapped'=>false))
->add('Prenom', TextType::class, array('mapped'=>false))
->add('Telephone', TextType::class, array(
'label' => 'Téléphone'))
->add('Email', TextType::class)
->add('Ajouter', SubmitType::class)
->getForm();

最佳答案

这是一个较老的问题,但我只是遇到了类似的情况。我想在 ListView 中有一个表单对象的多个版本。对我来说,解决方案是移动 createView()将表单对象调用到 View ,而不是在 Controller 中调用它。这是一种关于关注点分离的肮脏解决方案,但我想发布它以便无论如何它可能对其他人有所帮助。

我的 Controller 操作如下所示:

/**
* @Route("", name="cart_show")
* @Method("GET")
*/
public function showAction(Request $request)
{

/** @var CartInterface $cart */
$cart = $this->get('rodacker.cart');

$deleteForm = $this->createDeleteForm();

return $this->render(
'AppBundle:Cart:show.html.twig',
['cart' => $cart, 'deleteForm' => $deleteForm]
);

// ...
private function createDeleteForm()
{
return $this->createForm(
OrderItemDeleteType::class,
null,
[
'action' => $this->generateUrl('cart_remove_item'),
'method' => 'DELETE',
]
);
}
}

在 View 中我设置了 form通过调用 createView 变量从 Controller 传递的表单变量 ( deleteForm) 上的函数:
{% for item in items %}
{% set form = deleteForm.createView %}
{{ form_start(form) }}
{{ form_widget(form.item, {'value': item.image.filename}) }}
<button type="submit" class="btn btn-xs btn-danger" title="Artikel entfernen">
<i class="fa fa-trash-o"></i> entfernen
</button>
{{ form_end(form) }}
{% endfor %}

关于forms - Symfony3 多次渲染相同的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36286012/

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