Newscoop\GimmeBundle\Controller\SnippetTemplatesController::processForm PHP Метод

processForm() приватный Метод

Process SnippetTemplate form
private processForm ( Request $request, integer $snippetTemplateId = null ) : Form
$request Symfony\Component\HttpFoundation\Request
$snippetTemplateId integer
Результат Form
    private function processForm($request, $snippetTemplateId = null)
    {
        // XXX It breaks using PATCH
        $em = $this->container->get('em');
        $patch = false;
        if (!is_null($snippetTemplateId) && !is_numeric($snippetTemplateId)) {
            throw new InvalidArgumentException("Parameter 'template' is not numeric");
        }
        if (!$snippetTemplateId) {
            $snippetTemplate = new SnippetTemplate();
            $statusCode = 201;
        } else {
            $snippetTemplate = $em->getRepository('Newscoop\\Entity\\Snippet\\SnippetTemplate')->getTemplateById($snippetTemplateId, 'all');
            $statusCode = 200;
            $patch = true;
            if (is_null($snippetTemplate)) {
                throw new InvalidArgumentException("Template with ID: '" . $snippetTemplateId . "' does not exist.");
            }
        }
        $form = $this->container->get('form.factory')->create(new SnippetTemplateType(array('patch' => $patch)), $snippetTemplate);
        $form->handleRequest($request);
        if ($form->isValid()) {
            $snippetTemplate = $form->getData();
            $em->getRepository('Newscoop\\Entity\\Snippet\\SnippetTemplate')->save($snippetTemplate);
            $response = new Response();
            $response->setStatusCode($statusCode);
            $response->headers->set('X-Location', $this->generateUrl('newscoop_gimme_snippettemplates_getsinglesnippettemplate', array('id' => $snippetTemplate->getId()), true));
            return $response;
        }
        return $form;
    }