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哲学和建筑更紧密地合作。谢谢你的帮助