/** * Displays a form to edit an existing Article document. * * @Route("/{slug}/edit", name="sgkb_admin_articles_edit") * @Template() * @ParamConverter("article", class="ServerGroveKbBundle:Article") */ public function editAction(Article $article, array $forms = array()) { $original = clone $article; $dm = $this->getDocumentManager(); $editForm = $this->createForm(new ArticleType(), $original, array('enable_related_urls' => $this->areRelatedUrlsEnabled(), 'loader' => new \ServerGrove\KbBundle\Form\ChoiceList\CategoriesLoader($dm))); $locales = $this->get('service_container')->getParameter('server_grove_kb.locales'); $translationForms = array(); foreach ($locales as $locale) { try { $tmp = $dm->findTranslation(null, $article->getId(), $locale, false); } catch (\InvalidArgumentException $e) { $tmp = clone $original; $tmp->setIsActive(false)->setContent(''); } $form = isset($forms[$locale]) ? $forms[$locale] : $this->createForm(new ArticleTranslationType($locale), $tmp, array('id_prefix' => $locale . '_')); $translationForms[$locale] = $form->createView(); } return array('document' => $original, 'edit_form' => $editForm->createView(), 'delete_form' => $this->createDeleteForm($article)->createView(), 'translation_forms' => $translationForms); }
/** * @param \ServerGrove\KbBundle\Document\Article $article * @param array $locales * @return array */ private function getActiveLocales(Article $article, array $locales) { $activeLocales = array(); foreach ($locales as $locale) { try { $articleTranslation = $this->getDocumentManager()->findTranslation('ServerGrove\\KbBundle\\Document\\Article', $article->getId(), $locale, false); if ($articleTranslation->getIsActive()) { $activeLocales[] = $locale; } } catch (\InvalidArgumentException $e) { } } return $activeLocales; }