我正在制作广告页面.广告可以是不同类型的,因此具有不同的数据.例如,车辆将具有make和model作为额外数据.
现在,我有一个基础学说实体Advert,其中包含每个广告所需的数据.反过来不同的广告就是这个数据(doctrine2 discriminatormap)
如果用户选择创建车辆广告,我需要动态填充表单(使用ajax和symfony2表单)我想显示车辆广告的选项.但我还需要将实体更改为形式AdvertVehicle.
这可能吗?我确实在symfony2主页上阅读了食谱
"如何使用表单事件动态修改表单":这应该通过向您的应用程序发回AJAX来处理.在该控制器中,您可以提交表单,但只需使用提交的表单呈现更新的字段,而不是处理它.然后可以使用AJAX调用的响应来更新视图.
我理解如何将ajax调用回我的控制器,并且我理解如何使用表单事件但是如何获得渲染的选择框(例如包含车辆模型)的响应?使用新的AbstractType?还是formbuilder?
然后,当用户实际提交表单时,我需要使用所选广告类型的实体.我可以根据表单中的用户选择动态更改实体吗?
编辑
我检查了表格遗传,这很好,谢谢.我扩展AdvertType和覆盖buildForm()方法,然后我添加我需要的项目,AdvertVehicleType我调用父方法.
Futher说明
每一个广告实体包含price,description,title和category.一些广告包含更多,例如make和model.它们是由discriminatormap(doctrine2)区分的
例:
// -- Entity
class CarAdvert extends Advert {
protected $model;
protected $make;
}
// -- Entity
// -- This uses discriminator mapping
class Advert {
protected $title;
protected $description;
protected $price;
protected $category;
}
Run Code Online (Sandbox Code Playgroud)
如果用户选择cars我想要使用CarAdvert实体的类别(用于验证和持久性),如果用户选择了house …