Ejemplo n.º 1
0
 /**
  * Edits an existing Url document.
  *
  * @Route("/{slug}/update", name="sgkb_admin_urls_update")
  * @Method("post")
  * @ParamConverter("url", class="ServerGroveKbBundle:Url")
  */
 public function updateAction(Url $url)
 {
     $locales = $this->get('service_container')->getParameter('server_grove_kb.locales');
     $dm = $this->getDocumentManager();
     $translationForms = array();
     $valid = true;
     foreach ($locales as $locale) {
         try {
             $translation = $dm->findTranslation('ServerGrove\\KbBundle\\Document\\Url', $url->getId(), $locale, false);
             $required = true;
         } catch (\InvalidArgumentException $e) {
             $translation = $dm->findTranslation('ServerGrove\\KbBundle\\Document\\Url', $url->getId(), $locale);
             $required = false;
         }
         $form = $this->createForm(new UrlType($locale), $translation);
         $form->bind($this->getRequest());
         if ($form->isValid()) {
             $dm->bindTranslation($translation, $locale);
             $dm->flush();
             $url = $dm->refresh($url);
         } elseif ($required) {
             $valid = false;
         }
         $translationForms[$locale] = $form;
     }
     if ($valid) {
         return $this->redirect($this->generateUrl('sgkb_admin_urls_edit', array('slug' => $url->getSlug())));
     }
     return $this->render('ServerGroveKbBundle:Admin/Urls:edit.html.twig', $this->editAction($url, $translationForms), new Response('', 400));
 }