Exemplo n.º 1
0
 /**
  * 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);
 }
Exemplo n.º 2
0
 /**
  * @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;
 }