symfony controllerAction坚持多次相似的对象

时间:2014-01-28 17:17:34

标签: symfony object controller

在我的控制器中,有一个基于Doctrine CRUD生成的相当经典的“创建”动作。

但是,当我通过多次单击“创建”表单按钮执行此操作时,会创建与我单击的对象多次相同的对象。

这是一个主要问题,因为我的课程“操作”非常庞大,需要很长时间才能录制。用户很想点击几次。

 /**
 * Creates a new Operation entity.
 *
 * @Route("/", name="operation_create")
 * @Method("POST")
 * @Template("MyApplicationBundle:Operation:new.html.twig")
 */
public function createAction(Request $request)
{
    $entity  = new Operation();
    $form = $this->createForm(new OperationType(), $entity, array(
        'em' => $this->getDoctrine()->getManager(),
    ));
    $form->bind($request);

    if ($form->isValid()) {
        $em = $this->getDoctrine()->getManager();
        $entity->setdateCreation(new \DateTime())
               ->setUser($this->get('security.context')->getToken()->getUser());
        $em->persist($entity);
        $em->flush();
        $this->get('session')->getFlashBag()->add('success', 'OK');
        return $this->redirect($this->generateUrl('operation_show', array('id' => $entity->getId())));
    }
    return array(
        'entity' => $entity,
        'form'   => $form->createView(),
    );
}

如果有人能帮助我,那就太好了。

1 个答案:

答案 0 :(得分:2)

点击create按钮后,您必须使用JavaScript禁用或删除它们,并且用户无法再次点击它。

如果你使用jQuery:

<input type="submit" onclick="jQuery(this).attr('disabled', 'disabled')">