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;
}