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

时间:2014-11-12 09:37:03

标签: php symfony doctrine

我正在开展一个创建营销活动的项目。在其他属性中,每个Campaign都与一个AudioFile实体相关联,该实体指定要与该活动一起播放的音频文件。我创建广告系列的表单如下所示:

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

除此之外,我想让用户在创建广告系列时“即时”上传新的音频文件。一旦上传并创建一个新的音频文件实体对象并存储在数据库中我想动态更改实体字段以反映音频文件列表中的这一变化,我想这样做而不重新加载所有页面以免丢失已填满的字段,但我无法弄清楚如何实现这一目标。任何帮助将不胜感激。

谢谢

2 个答案:

答案 0 :(得分:0)

嗯,Symfony是一个后端框架,这意味着要实现你想要的东西,你必须实现一些Javascript功能。另请注意,表单是有状态的,并且在控制器中实例化。

因此,您必须保留AudioFile,然后将其与Campaign相关联。这可以通过单独接受文件和活动的形式来实现。

答案 1 :(得分:0)

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