Symfony2:动态更改实体字段类型的类属性


Symfony2: dynamically change class property of entity field type

我正在做一个创建营销活动的项目。在其他属性中,每个活动都关联了一个AudioFile实体,该实体指定要与该活动一起播放的音频文件。我创建活动的表单如下:

 $form = $this->createFormBuilder($CampaignObject)
->add('audiofile', 'entity', array('class'=>'AcmeDemoBundle:AudioFiles', 'property'=>'name',   'multiple'=>false, 'expanded'=>true, 'mapped'=>true))
/*other fields */

除此之外,我想让用户在创建活动时"动态"上传一个新的音频文件。一旦它被上传,一个新的音频文件实体对象被创建并存储在数据库中,我想动态地更改实体字段,以反映音频文件列表中的这一变化,我想在不重新加载所有页面的情况下进行更改,以免丢失已经填充的字段,但我不知道如何实现这一点。如有任何帮助,我们将不胜感激。

感谢

好吧,Symfony是一个后端框架,这意味着要实现您想要的,您必须实现一些Javascript功能。还要注意,表单是有状态的,并且它在控制器中实例化。

因此,您必须持久化您的AudioFile,然后将其链接到Campaign。这可以通过单独的表格来实现,这些表格尊重地接受文件和活动。

谢谢。我终于找到了一个变通办法。我从一个独立于表单的getRepository中生成了音频列表,并为每个活动添加了一个选择按钮。当用户单击选择按钮时,我用所选音频文件的id填充一个隐藏字段。然后,当在控制器中提交时,我通过该id手动获取AudioFile对象,并在持久化之前执行Doctrine$campaign->addAudiofile($AudioFile)。