Newscoop\NewscoopBundle\Controller\TopicsController::addAction PHP Метод

addAction() публичный Метод

public addAction ( Request $request )
$request Symfony\Component\HttpFoundation\Request
    public function addAction(Request $request)
    {
        $node = new Topic();
        $translator = $this->get('translator');
        $cacheService = $this->get('newscoop.cache');
        $form = $this->createForm(new TopicType(), $node);
        $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);
        }
        if ($form->isValid()) {
            $locale = $request->get('_code', $request->getLocale());
            $topicService = $this->get('newscoop_newscoop.topic_service');
            try {
                $topicService->saveNewTopic($node, $locale);
            } catch (\Exception $e) {
                $response = array('status' => false, 'message' => $translator->trans('topics.exists', array(), 'topics'));
                return new JsonResponse($response, 409);
            }
            $response = array('status' => true, 'message' => $translator->trans('topics.added', array(), 'topics'), 'topicId' => $node->getId(), 'topicTitle' => $node->getTitle(), 'locale' => $locale);
            $cacheService->clearNamespace('topic');
        } else {
            $response = array('status' => false, 'message' => $form->getErrors()->getChildren()->getMessage());
        }
        return new JsonResponse($response);
    }