/**
  * @param $id
  * @param $action
  * @param Request $request
  * @Route("/attribute/{action}/{id}", name="admin_attribute_edit",
  *     defaults={"id": 0, "action": "new"},
  *     requirements={
  *      "action": "new|edit",
  *      "id": "\d+"
  *     })
  * @Method({"GET", "POST"})
  * @Template("AppBundle:admin/attributes/form:attribute.html.twig")
  * @return array|\Symfony\Component\HttpFoundation\RedirectResponse
  */
 public function attributeEditAction($id, $action, Request $request)
 {
     //        TODO: Add check on unique options for attribute
     $em = $this->getDoctrine()->getManager();
     $originalOptions = new ArrayCollection();
     if ($action == "edit") {
         $attribute = $em->getRepository('AppBundle:Attribute')->find($id);
         $title = 'Edit attribute id: ' . $id;
         foreach ($attribute->getOptions() as $option) {
             $originalOptions->add($option);
         }
     } else {
         $attribute = new Attribute();
         $attribute->addOption(new AttributeOption());
         $title = 'Create new attribute';
     }
     $form = $this->createForm(AttributeType::class, $attribute, ['em' => $em, 'action' => $this->generateUrl('admin_attribute_edit', ['action' => $action, 'id' => $id]), 'method' => Request::METHOD_POST])->add('save', SubmitType::class, array('label' => 'Save'));
     if ($request->getMethod() == 'POST') {
         $form->handleRequest($request);
         if ($form->isValid()) {
             foreach ($originalOptions as $option) {
                 if (false === $attribute->getOptions()->contains($option)) {
                     $em->remove($option);
                 }
             }
             $em->persist($attribute);
             $em->flush();
             if ($attribute->getId()) {
                 return $this->redirectToRoute('admin_attribute_edit', ['action' => 'edit', 'id' => $attribute->getId()]);
             } else {
                 return $this->redirectToRoute('admin_attribute_edit');
             }
         }
     }
     $formData = $form->createView();
     return ['title' => $title, 'form' => $formData];
 }