Newscoop\NewscoopBundle\Controller\TopicsController::addTranslation PHP 메소드

addTranslation() 공개 메소드

public addTranslation ( Request $request, $id )
$request Symfony\Component\HttpFoundation\Request
    public function addTranslation(Request $request, $id)
    {
        $em = $this->get('em');
        $translator = $this->get('translator');
        $cacheService = $this->get('newscoop.cache');
        $form = $this->createForm(new TopicTranslationType());
        $form->handleRequest($request);
        $response = array('status' => false, 'message' => $translator->trans('topics.error', array(), 'topics'));
        if (!$this->get('form.csrf_provider')->isCsrfTokenValid('default', $request->get('_csrf_token'))) {
            return new JsonResponse(array('status' => false, 'message' => $translator->trans('topics.csrfinvalid', array(), 'topics')), 403);
        }
        $node = $this->findOr404($id);
        if (is_array($node)) {
            return new JsonResponse($node, 404);
        }
        if ($form->isValid()) {
            $data = $form->getData();
            $locale = $data['locale'];
            $language = $em->getRepository('Newscoop\\Entity\\Language')->findOneByCode($locale);
            if (!$language) {
                return new JsonResponse(array('status' => false, 'message' => $translator->trans('topics.alerts.languagenotfound', array('%locale%' => $locale), 'topics')), 404);
            }
            try {
                $topicTranslation = new TopicTranslation($language->getCode(), 'title', $data['title']);
                $node->addTranslation($topicTranslation);
                $em->flush();
            } catch (\Exception $e) {
                return new JsonResponse(array('status' => false, 'message' => $translator->trans('topics.alerts.translationexists', array('%locale%' => $locale), 'topics')), 403);
            }
            $response = array('status' => true, 'message' => $translator->trans('topics.alerts.translationadded', array(), 'topics'), 'topicTranslationId' => $topicTranslation->getId(), 'topicTranslationTitle' => $topicTranslation->getContent(), 'topicTranslationLocale' => $topicTranslation->getLocale());
            $cacheService->clearNamespace('topic');
        }
        return new JsonResponse($response);
    }