【发布时间】:2012-10-31 22:44:34
【问题描述】:
假设在 Symfony2 中有一个实体,它有一个字段 bestfriend,这是一个从满足复杂要求的 User 实体列表中选择的 User 实体。
您可以通过指定它是entity field type 来在表单中呈现此字段,即:
$builder->add('bestfriend', 'entity', array(
'class' => 'AcmeHelloBundle:User',
'property' => 'username',
));
此表单字段呈现为<select>,其中每个显示的值都在表单中:
<option value="user_id">user_username</option>
因此,可以通过使用<optgroup> 标签来渲染该字段以突出显示朋友的这种特殊功能。
按照这个原则,我创建了一个字段类型,即FriendType,它创建了this answer中的选择数组,呈现如下:
$builder->add('bestfriend', new FriendType(...));
FriendType 类创建了一个<select>,以相同的<option>s 组织但在<optgroup>s 下组织。
问题来了!提交表单时,框架识别出用户字段不是用户的实例,而是一个整数。 如何让 Symfony2 明白传入的 int 是 User 类型实体的 id?
【问题讨论】:
-
老实说,我不明白你的问题,但我认为你可以用 DataTransformer 解决它
-
@nikita2206 看看我自己的答案。