gpt4 book ai didi

javascript - 新表单 - 嵌入表单集合 - Symfony2

转载 作者:行者123 更新时间:2023-11-28 08:58:33 26 4
gpt4 key购买 nike

我所做的与此处解释的相同:http://symfony.com/doc/current/cookbook/form/form_collections.html

但就我而言,我想添加新的“标签”,而不是通过单击链接手动添加,而是自动添加。我为我的模板提供了一个包含项目的数组,对于每个项目,我想添加一个新表单 - 项目数应等于表单数。

如果可能的话,我更喜欢这样的解决方案:

{% for i in items %}

{{ i.name }} {{ form_widget(form.tags[loop.index0].name) }}

{% endfor %}

但是如何在 Controller 中自动创建对象呢?它告诉我没有索引 = 1 的对象,是的 - 没有,但是有没有办法自动创建它们并且不需要在我的 Controller 中创建例如 10 个相同类型的空对象? :(

<小时/>

我在想的另一件事是这样的:

{% for i in items %}

<ul class="orders" data-prototype="{{ form_widget(form.orders.vars.prototype)|e }}">

{{ i.name }} and here should be a field from the form, for example tag.name

</ul>

{% endfor %}

我建议应该更改食谱中给出的js来执行此操作,但我不擅长js,并且我的尝试没有完成这项工作。

我尝试将其放入循环中:

<script>
addTagForm(collectionHolder);
</script>

这在 .js 文件中:

var collectionHolder = $('ul.orders');

jQuery(document).ready(function() {

collectionHolder.data('index', collectionHolder.find(':input').length);

function addTagForm(collectionHolder) {

var prototype = collectionHolder.data('prototype');

var index = collectionHolder.data('index');

var newForm = prototype.replace(/__name__/g, index);
collectionHolder.data('index', index + 1);

var $newFormLi = $('<li></li>').append(newForm);
}

});

最佳答案

假设您的主类有 addTag($tag) 方法,您可以向其添加不同的"new"标签。

类任务

public function addTag($tag){
$this->tags[]=$tag;

return $this;
}

在您的 Controller 中(假设此处有 10 个标签)

$task=new Task();
for($i=0;i<10;i++){
$task->addTag(new Tag());
}
$form->setData($task);

在你看来

{% for tag in form.tags %}
<ul class="orders">
<li>{{ form_widget(tag.name) }}</li>
</ul>
{% endfor %}

如果不需要手动点击,可以删除JavaScript部分。

关于javascript - 新表单 - 嵌入表单集合 - Symfony2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18101341/

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