新表单-嵌入表单集合-Symfony2
New forms - embedding a collection of forms - Symfony2
我正在做与这里解释的相同的事情:http://symfony.com/doc/current/cookbook/form/form_collections.html
但在我的情况下,我想添加新的"标签"不是手动点击链接,而是自动添加。我给我的模板一个包含项目的数组,对于每个项目,我想添加一个新的表单——项目的数量应该等于表单的数量。
如果可能的话,我更喜欢这样的解决方案:
{% for i in items %}
{{ i.name }} {{ form_widget(form.tags[loop.index0].name) }}
{% endfor %}
但是如何在控制器中自动创建对象呢?它告诉我没有索引为1的对象,是的-没有,但没有一种方法可以自动创建它们,而不需要在我的控制器中创建例如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;
}
在控制器中(假设此处有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部分。
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何使用WCF服务和javascript表单post上传.doc文件
- Javascript生成的表单未提交
- 如何使用javascript或html下载PDF格式的填写表单
- HTML表单提交时未执行外部函数
- 防止MeteorJS集合中的重复(通过表单)
- ASP.NET MVC3 表单集合在 jQuery ajax 发布期间为 0
- MSCRM 识别表单属性集合上的快速视图属性
- 在 Meteor 中,如何使表单加载从先前从 MongoDB 集合中提取的插入对象预填充
- 将数据从表单获取到骨干中的集合
- Asp.Net MVC 3 表单集合在提交后丢失数据
- 新表单-嵌入表单集合-Symfony2
- Symfony 2:如何处理表单中的嵌套集合
- 搜索条件表单和集合
- Meteor AutoForm:带id的表单;asdf”;需要“;模式“;或“;集合“;属性
- 如何在Meteor的相同集合字段中添加来自相同表单的两个输入
- 流星-表单提交时没有插入到集合中
- Symfony2表单集合的一个实体
- 如何通过封装在指令中的angularjs表单集合来访问输入元素
- 主干表单使用主干集合和“选择编辑器”选项