我正在处理用于发送通知的表单.在我的形式中,除其他字段外,还有一个输入文件字段.在这个字段中,我正在加载一个CSV文件.从CSV(包含一列电子邮件)我使用https://code.google.com/p/jquery-csv/提取数据并将其添加到选择了所有选项的选择只读多个字段.
注意:我使用表单类型(通过Symfony2书籍)创建了表单 – 类NotificationType扩展了AbstractType;表格通过AJAX提交;
1.打一拳
考虑到动态填充选择字段,我决定不将其添加到表单构建器,而是使用JavaScript注入它.
这是一个糟糕的举动,因为在提交表单时,Symfony2会验证表单构建器中添加的字段是否是提交的字段.返回的错误是:此表单不应包含额外的字段.
罢工两个
继续罢工,我想看看我是否可以解决这个问题,所以我在表单生成器中添加了select字段但没有选项,也通过JavaScript注入选项.
仍然没有运气. Symfony2还确保在添加字段时无法提交未添加到表单构建器的选项.返回的错误是:此值无效.
罢工三
从Strike 1和2开始,我猜测实现这项工作的唯一方法是在添加字段时在choices数组中添加所有可能的选项.这样,字段和选项对提交有效.
但这不是我认为可行的选项,特别是因为在选择字段中我期待10000个可能的结果,在我加载CSV文件之前我不知道.
你能为这个推荐任何其他方法吗?
谢谢!
最佳答案
看看如何dynamically modify forms(例子#3).
您需要执行此操作,因为表单将根据构建器选项进行验证,因此如果您在渲染时添加新字段或更改其选项,则无法了解它.
或者,您不将表单映射到模型/实体并自行处理.