我有两个实体:产品和类别(Symfony 2.3)。
我想创建一个表单,用户可以通过首先选择类别来选择产品。用户通过单击图像选择类别,然后我想将图像的值设置为隐藏输入,但我不知道如何将外部实体选择列表更改为隐藏输入(http://symfony.com/doc/current/reference/forms/types/entity.html)。
答案 0 :(得分:2)
要做到这一点,您需要使用data transformer做两件事:
我上面链接的symfony文档(here too)实际上是在使用带有表单的数据转换器的完整示例。
作为一个无耻的插件(因为我认为它很有帮助)我已经编写了一个关于使用数据转换器来实现具有实体ID的隐藏字段的小教程:http://lrotherfield.com/blog/symfony2-forms-entity-as-hidden-field/
如果您使用的是数据转换器,则无需担心恶意用户。数据转换器将失败,因为它无法从伪id中反转转换类别。在我的教程中,变换器将抛出Symfony\Component\Form\Exception\TransformationFailedException
异常。
如果您希望检查提交的类别是否真实,如果您希望在表单中显示错误,也可以编写验证程序(potentially using a call back)。由于外键约束将失败,因此Doctrine不允许您保留伪类别关系。