gpt4 book ai didi

php - symfony2 中同一实体的多行表单

转载 作者:可可西里 更新时间:2023-10-31 22:45:39 26 4
gpt4 key购买 nike

我创建了一个包含多行的简单表单:

Controller :

public function indexAction() 
{
$repository = $this->getDoctrine()->getRepository('MyBundle:Product');
$products = $repository->findAll();

foreach ($products as $product) {
$forms[] = $this->createForm(new ProductType, $product)->createView();
}

return $this->render('MBundle:Default:index.html.twig', array('form' => $forms);

}

我在 Twig 中渲染它:

<form action="{{ path('_submit') }}" method="post">
{% for key, formData in forms %}
{{ form_row(formData.id) }}
{{ form_row(formData.name) }}
{{ form_row(formData.nameEnglish) }}
<br clear="all" />
{% endfor %}
</form>

当我提交表单时,我的每个输入字段集都有相同的名称属性,我只得到最后一个。如何获取所有行并在我的 submitAction() Controller 中验证它们?每个输入都需要有唯一的名称,对吧? ...也许我需要以某种方式设置 name="something[name][]"但该怎么做?

最佳答案

好的,Cerad 的评论是正确的,我们必须为此使用集合。起初听起来像是胡说八道,但它有点正确。我花了一段时间才弄明白。

所以我必须创建一个 ProductsType,它是一个 arrayCollection 并插入每个产品。 (就像在带有任务和标签的文档中一样)

我用过:

$repository = $this->getDoctrine()->getRepository('ExampleBundle:Product');
$products = $repository->findAll();

$productCollection = new Products;

foreach ($products as $product) {
$productCollection->getProducts()->add($product);
}

$collection = $this->createForm(new ProductsType, $productCollection);

return $this->render('ExampleBundle:Default:index.html.twig', array(
'collection' => $collection->createView()
));

然后我在 Twig 上做:

<div class="products">
{% for product in collection.products %}
{{ form_row(product.id) }}
{{ form_row(product.name) }}
{{ form_row(product.description) }}
<br clear="all" />
{% endfor %}
</div>

工作完成。

甚至您可以通过以下方式将主题应用于每一行:

{% block _productsType_products_entry_name_row %}
<div class="yourDivName">{{ block('form_widget') }}</div>
{% endblock %}
{% block _productsType_products_entry_description_row %}
<div class="yourDivDescription">{{ block('form_widget') }}</div>
{% endblock %}

很酷的东西!

关于php - symfony2 中同一实体的多行表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12359138/

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