自定义表单中的可选选项

时间:2013-05-31 10:12:36

标签: forms symfony doctrine-orm symfony-2.3

所以,我正在寻找以下问题的解决方案,这将是在Symfony2.3中实施的“最佳实践”。

情况简述: 我有一个在其自己的类中定义的表单(“ProductType”) 表单包含链接到不同表的字段。用户需要从该列表中选择1个值。

我想限制用户可以选择的值。并非所有在数据库中找到的选项都是相关的。我需要根据数据库中的信息和已应用于表单的当前值动态减少列表中的选项。 我可以通过添加“订阅”来执行此操作,其中我更改了表单的内容。 但是在这个订阅中,我需要访问数据库/ Doctrine Repository来确定用户可以选择的列表。

所以我需要在Subscription中注入Doctrine,但它在Type类中不可用。

最佳解决方案是什么? - 将Subscription类定义为Symfony中的服务,并通过该路由注入Doctrine? - 别的什么?

不幸的是,Symfony文档对此并不十分清楚。

2 个答案:

答案 0 :(得分:0)

我不确定我是否得到了你真正想做的事情,但如果你想减少一些元素(例如insisde,例如下拉列表)取决于值,请使用查询构建器实体字段类型:

http://symfony.com/doc/current/reference/forms/types/entity.html#query-builder

答案 1 :(得分:0)

您需要使用查询构建器,因此您需要存储库。要做到这一点,只需使用

use Doctrine\ORM\EntityRepository; 

在您的ProductType中,如the doc

中所述