0

我有一个问题模型和一个问题模型,通过多对多关系连接。现在我正在构建一个可拖动的 UI (jQueryUI),可以将问题添加到问题中。

在右侧,每个问题项都表示为包含其 __identity 的(隐藏)文本字段:

<f:form.textfield property="questions" name="questions" value="{question}" />

在左侧,我有一个表单作为问题项的放置目标。提交此表单时,flow3 回复此错误消息:

1297759968:在属性路径“questions”处为目标类型“MC\QuestionaryBuilder\Domain\Model\Questionary”进行属性映射时出现异常:不允许映射属性“__identity”。

您需要使用 $propertyMappingConfiguration->allowProperties('__identity') 来启用此属性的映射。

我怎样才能让它工作?:(

编辑

当我使用这个多选框时,我可以让它工作!

但我需要一个可拖动的 UI,其中每个问题项都是包含 UID 的隐藏文本字段。

4

1 回答 1

0

当您使用流体构建表单时,打开和结束标记之间的所有元素form都是受信任的属性(相同类型的“允许修改”-属性)。流体保护您的表单,或者更确切地说:对象,用于操作。因为您的 dropzone 一开始是空的(我猜),所以这些字段没有标记为“允许操作”字段。这就是您的错误信息想要表达的意思。

看起来您没有向属性问题添加问题,而是尝试问题设置为问题对象,这就是为什么您的错误表明您正在尝试操纵问题的身份。你应该试试<f:form.textfield name="questions[]" value="{question}" />

在错误消息中,您还可以找到您可能想知道的提示:您可以使用 property-mapping-configuration 自行将字段标记为“允许操作”。

您可以在此处找到文档

示例: 这是一个如何使用属性映射配置的粗略示例。

protected function initializeCreateAction() {
        $configuration = $this->arguments['newQuestionary']->getPropertyMappingConfiguration();
        //You can do: $configuration->allowAllProperties();
        //Or more specify:
        $configuration->allowProperties('questions');
}

public function createAction($newQuestionary){
        //...
        $this->myRepository->create($newQuestionary);
        //...
}

也许您可以向我们提供更多信息,尤其是您的 html(可能还有模型)的示例代码。

也很高兴知道:

  • 您可以<f:form.hidden .../>用于隐藏字段。
  • 如果您使用<f:form.someTag property="myPro" />name- 和 value- 属性将被设置(并覆盖)。
于 2014-09-08T17:59:43.743 回答