Symfony表单实体集合自定义对象构建器

时间:2014-01-25 20:37:20

标签: php forms events symfony

我的应用程序通过主机路由处理多个商店,因此几乎每个表都有shop_id。现在,我有CategoriesType来管理它们的类别和单独的表单。

$builder->add('categories', 'bootstrap_collection', array(
        'type' => $this->categoryType,
        'allow_add' => true,
        'allow_delete' => true,
        'error_bubbling' => false,
    ));

categoryType是Type,它是使用当前商店构建的,其中data_class设置为Category实体。但是需要将shop_it正确存储在DB中。

问题是,如何在表单被赋值之前嵌入逻辑来改变对象 - 如何在新实体上使用setShop()。

以下是我如何使用它:

$categoriesForm = $this->createForm(new MenuCategoriesType(
    $this->get('form.category_type')
), $catering = $this->getUser()->getCatering());
$categoriesForm->handleRequest($request);

if ($categoriesForm->isValid()) {
    $em = $this->getDoctrine()->getManager();
    $em->persist($catering);
    $em->flush();
}

1 个答案:

答案 0 :(得分:0)

通常我会使用PostPersist事件。