小编Asb*_*tos的帖子

动态表单(切换实体)symfony2

我正在制作广告页面.广告可以是不同类型的,因此具有不同的数据.例如,车辆将具有makemodel作为额外数据.

现在,我有一个基础学说实体Advert,其中包含每个广告所需的数据.反过来不同的广告就是这个数据(doctrine2 discriminatormap)

如果用户选择创建车辆广告,我需要动态填充表单(使用ajax和symfony2表单)我想显示车辆广告的选项.但我还需要将实体更改为形式AdvertVehicle.

这可能吗?我确实在symfony2主页上阅读了食谱

"如何使用表单事件动态修改表单":这应该通过向您的应用程序发回AJAX来处理.在该控制器中,您可以提交表单,但只需使用提交的表单呈现更新的字段,而不是处理它.然后可以使用AJAX调用的响应来更新视图.

我理解如何将ajax调用回我的控制器,并且我理解如何使用表单事件但是如何获得渲染的选择框(例如包含车辆模型)的响应?使用新的AbstractType?还是formbuilder?

然后,当用户实际提交表单时,我需要使用所选广告类型的实体.我可以根据表单中的用户选择动态更改实体吗?

编辑 我检查了表格遗传,这很好,谢谢.我扩展AdvertType和覆盖buildForm()方法,然后我添加我需要的项目,AdvertVehicleType我调用父方法.

Futher说明 每一个广告实体包含price,description,titlecategory.一些广告包含更多,例如makemodel.它们是由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 …

php ajax jquery symfony doctrine-orm

6
推荐指数
1
解决办法
1207
查看次数

标签 统计

ajax ×1

doctrine-orm ×1

jquery ×1

php ×1

symfony ×1