我有一个数据结构,其中一个主题有许多问题(一对多),一个问题有许多答案(一对多)。
我已经在主题表单中设置了问题作为嵌入式集合,由于有了烹饪书条目,我可以百分之百地解决所有问题。
当我试图开发它以在问题表单中嵌入一组答案表单时,我遇到了一个问题。
包含顶层原型表单的数据原型属性具有表单的全部深度,因此包括问题和答案的原型。但它对每个级别使用相同的占位符。
<div id="topic_questions___name__">
<div class="control-group">
<label for="topic_questions___name___questionText" class="control-label">question</label>
<div class="form-row-errors"></div>
<div class="controls">
<textarea id="topic_questions___name___questionText" name="topic[questions][__name__][questionText]" required="required" class="input-block-level"></textarea>
</div>
</div>
<div class="control-group">
<label class="control-label">answers</label>
<div class="controls">
<div id="topic_questions___name___answers" data-prototype="<div class="control-group"><label class="control-label">__name__label__</label><div class="controls"><div id="topic_questions___name___answers___name__"><div class="control-group"><label for="topic_questions___name___answers___name___answerText" class="control-label">option</label><div class="form-row-errors"></div><div class="controls"><input type="text" id="topic_questions___name___answers___name___answerText" name="topic[questions][__name__][answers][__name__][answerText]" required="required" maxlength="255" /></div></div><input type="hidden" id="topic_questions___name___answers___name___sortOrder" name="topic[questions][__name__][answers][__name__][sortOrder]" /></div></div></div>"></div>
</div>
</div>
你可以在底部看到一条很长的线,我想这就是原型(!)答案表。我无法只替换与问题相关的占位符,而不替换与答案相关的占位符。
做正常的事
var newForm = prototype.replace(/__name__/g, collectionHolder.children().length);
在创建问题表单的真实实例时,当然会将__name__
的所有实例替换为相同的值,因此当为答案表单创建数据原型时,它已经替换了所有占位符。
这就是答案表单的数据原型,当我点击添加一个真正的问题表单时
<div class="control-group">
<label class="control-label">1label__</label>
<div class="controls">
<div id="topic_questions_1_answers_1">
<div class="control-group">
<label for="topic_questions_1_answers_1_answerText" class="control-label">option</label>
<div class="form-row-errors"></div>
<div class="controls">
<input type="text" id="topic_questions_1_answers_1_answerText" name="topic[questions][1][answers][1][answerText]" required="required" maxlength="255" />
</div>
</div>
</div>
</div>
如您所见,占位符根本不起作用-在创建问题表单时,它已被替换为问题表单的计数。
使用Symfony提供的机制是否可以实现这种多深度嵌入式集合?
只要它尝试为每个“级别”使用相同的占位符,那么我就看不出如何使用。
您是否至少使用Symfony 2.1?如果是这样,您可以使用属性“prototype\u name”更改标签:
http://symfony.com/doc/master/reference/forms/types/collection.html#prototype-名称
以您的形式:
->add('answers', 'collection', array(
'type' => new AnswerType(),
'allow_add' => true,
'prototype_name' => 'another_name'
))
我有一个mongodb文档,我已经把它变成了一个表单。该文档有两个emebedOne文档,它们也是表单。正在验证主文档,但未验证嵌入文档。我正在使用自定义断言,但我认为这不重要。 文档 嵌入式类对此的自定义断言永远不会调用。 形式 处理程序 谢谢你的帮助。 科里
问题内容: 我想知道是否有可能在另一个Embeddable中包含Embeddable的ElementCollection? 这是我的供应商实体的示例,该实体具有可嵌入类型的地址列表: 这是我的可嵌入地址,其中包含可嵌入电话的列表 这是嵌入式电话的定义 我目前正在使用JPA 2 + Hibernate 3.6.x对此进行测试 在地址中使用嵌入式电话在我的测试中导致错误。这是最底层的部分调试消息: 删
我有一个实体根 集合项“col”本身具有嵌入对象 EMB“对象非常简单 我希望数据库表是这样的 表:根字段:ID 表:ROOT_COLS字段:ROOT_ID,EMB_FIELD 启动这个spring boot应用程序会给我一个ArrayIndexOutOfBoundsException 如何修复此问题? hibernate版本:5.0.12 null
问题内容: 我在Scala和Java之间遇到编译问题。 我的Java代码需要一个 我的scala代码有一个 我收到编译错误: 似乎scala.collection.JavaConversions不适用于嵌套集合,即使Vector可以隐式转换为Iterable。除了遍历scala集合并手动进行转换之外,我还能做些什么使这些类型起作用? 问题答案: 应该弃用恕我直言。您最好使用来明确说明转换的时间和地
只使用一个集合很好,但是我需要编辑外部窗体的原型,所以它为每一行呈现内部窗体的原型。 你知道我该怎么做吗?还有什么是最好的储蓄方式 编辑:现在我正在尝试呈现嵌套窗体的原型: 促销特征选择类型 第一级原型,工作很好。
在工作中,我在Symfony 3.4/Doctrine/mySQL中有一个(旧的)项目,其中我使用了一组嵌入式表单。A类包含对象B(ManyToOne)的arrayCollection(原则一域一域)。 在创建或编辑时,对象A的输入形式允许使用“添加”按钮创建/修改/删除对象B的嵌入形式。它按预期工作。 原则级联(持久化/删除和孤儿删除)允许自动持久化对象A上的所有修改(包括新的/修改/删除嵌入的