Symfony2 Forms - 如何使用动态选择选项

时间:2015-05-06 11:38:27

标签: php jquery ajax forms symfony

我正在处理用于发送通知的表单。在我的形式中,除其他字段外,还有一个输入文件字段。在此字段中,我正在加载CSV文件。从CSV(包含一列电子邮件)我使用https://code.google.com/p/jquery-csv/提取数据并将其添加到选择了所有选项的选择只读多个字段。

注意:我使用表单类型(Symfony2书籍)创建了表单 - class NotificationType extends AbstractType;表格通过AJAX提交;

1。打一个 考虑到动态填充选择字段,我已决定将其添加到表单构建器,而是使用JavaScript注入它。

这是一个糟糕的举措,因为在提交表单时,Symfony2会验证表单构建器中添加的字段是否是提交的字段。返回的错误是:此表单不应包含额外的字段

2。打两个 接下来我想看看是否可以解决这个问题,所以我在表单构建器中添加了select字段但没有选项,也通过JavaScript注入选项。

仍然没有运气。 Symfony2还确保在添加字段时无法提交未添加到表单构建器的选项。返回的错误是:此值无效

3。罢工三 从Strike 1和2开始,我猜测实现这项工作的唯一方法是在添加字段时在choices数组中添加所有可能的选项。这样,字段和选项对提交有效。

但这不是我认为可行的选项,特别是因为在选择字段中我期待10000个可能的结果,在我加载CSV文件之前我不知道这些结果。

你能为这个提出任何其他方法吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

看看如何dynamically modify forms(示例#3)。

您需要执行此操作,因为表单将根据构建器选项进行验证,因此,如果您在渲染时添加新字段或更改其选项,则无法了解它。

或者您不将表单映射到模型/实体并自行处理。