Symfony 从其他实体控制器保存实体对象

Symfony 从其他实体控制器保存实体对象,symfony,doctrine,entitymanager,Symfony,Doctrine,Entitymanager,我有一张实体“优惠券”的表格。在这个表单中,我有一个用于实体“注释”的表单。因为我使用实体“优惠券”控制器访问实体“注释”的形式,所以我在该控制器(“优惠券”控制器)中处理“注释”的提交。但当我处理提交并尝试持久化和刷新数据时,没有一个数据存储在我的实体“注释”表中。我认为这是因为条令使用了“息票”的实体管理器 我希望我足够清楚。你能帮我吗 public function editAction(Request $request, Coupon $coupon) { $modified =

我有一张实体“优惠券”的表格。在这个表单中,我有一个用于实体“注释”的表单。因为我使用实体“优惠券”控制器访问实体“注释”的形式,所以我在该控制器(“优惠券”控制器)中处理“注释”的提交。但当我处理提交并尝试持久化和刷新数据时,没有一个数据存储在我的实体“注释”表中。我认为这是因为条令使用了“息票”的实体管理器

我希望我足够清楚。你能帮我吗

public function editAction(Request $request, Coupon $coupon)
{
    $modified = new \DateTime('now');
    $this->denyAccessUnlessGranted('ROLE_USER', null, 'Vous n\'avez pas les droits nécessaires!');
    // Ici on bloque l'accès au coupon pour les autres utilisateurs
    $coupon->setAccess(0);
    $em = $this->getDoctrine()->getManager();
    $em->persist($coupon);
    $em->flush($coupon);

    // ensuite on affiche le formulaire coupon et/ou on le traite
    $editForm = $this->createForm('GestCoupons\CouponBundle\Form\CouponType', $coupon);
    if ( $editForm->get('dateAjout') != null ) {
        $editForm->get('dateMaj')->setData($modified->format('d/m/Y H:i'));
    }
    $editForm->handleRequest($request);

    //on cree le formulaire d'annotation et/ou on le traite
    $annot = new Annotation();
    $annotForm = $this->createForm('GestCoupons\AnnotationBundle\Form\AnnotationType', $annot);
    $annotForm->get('coupon')->setData($coupon->getId());
    $annotForm->get('date')->setData($modified->format('d/m/Y H:i'));
    $annotForm->handleRequest($request);

    if ($editForm->isSubmitted() && $editForm->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $coupon->setAccess(1);
        $em->persist($coupon);
        $em->flush($coupon);
        return $this->redirectToRoute('coupon_show', array('id' => $coupon->getId()));
    }

    if ($annotForm->isSubmitted() && $annotForm->isValid()) {
        $em = $this->getDoctrine()->getManager('annotation');
        $em->persist($annot);
        $em->flush($annot);
    }

感谢您的帮助。

您确定在保存
注释之前您不仅仅是在重定向吗?有效的优惠券表单意味着您在保存注释之前点击return
$this->redirectToRoute()
。顺便说一句,你为什么使用不同的经理?嗨,谢谢你的回答。不,通过这段代码,我得到一个错误,它告诉我“没有管理器注释”。因此,它使用了annotForm提交的语句:)。在我看来,您正在手动执行许多可以(应该)自动完成的步骤。如果您在优惠券和注释之间有很多关系,那么您的注释表单应该是优惠券表单的子表单,并且条令会为您处理所有事情。读一读,你就会更好地理解我的意思。嗨,鲁比,事实上,它是按代码工作的。但我确实可以利用人际关系。我认为我将实施多人合作关系,以便与symfony哲学和建筑更紧密地合作。感谢您的帮助您确定在保存
批注之前您不仅仅是在重定向吗?有效的优惠券表单意味着您在保存注释之前点击return
$this->redirectToRoute()
。顺便说一句,你为什么使用不同的经理?嗨,谢谢你的回答。不,通过这段代码,我得到一个错误,它告诉我“没有管理器注释”。因此,它使用了annotForm提交的语句:)。在我看来,您正在手动执行许多可以(应该)自动完成的步骤。如果您在优惠券和注释之间有很多关系,那么您的注释表单应该是优惠券表单的子表单,并且条令会为您处理所有事情。读一读,你就会更好地理解我的意思。嗨,鲁比,事实上,它是按代码工作的。但我确实可以利用人际关系。我认为我将实施多人合作关系,以便与symfony哲学和建筑更紧密地合作。谢谢你的帮助