/** * {@inheritdoc} */ public function createNewContainer(array $values = array(), \Closure $alter = null) { $container = $this->blockManager->create(); $container->setEnabled(isset($values['enabled']) ? $values['enabled'] : true); $container->setCreatedAt(new \DateTime()); $container->setUpdatedAt(new \DateTime()); $container->setType($this->defaultContainer); if (isset($values['dashboard'])) { $container->setDashboard($values['dashboard']); } if (isset($values['name'])) { $container->setName($values['name']); } else { $container->setName(isset($values['code']) ? $values['code'] : 'No name defined'); } $container->setSettings(array('code' => isset($values['code']) ? $values['code'] : 'no code defined')); $container->setPosition(isset($values['position']) ? $values['position'] : 1); if (isset($values['parent'])) { $container->setParent($values['parent']); } if ($alter) { $alter($container); } $this->blockManager->save($container); return $container; }
/** * Updates a block. * * @ApiDoc( * requirements={ * {"name"="id", "dataType"="integer", "requirement"="\d+", "description"="block identifier"}, * }, * input={"class"="sonata_page_api_form_block", "name"="", "groups"={"sonata_api_write"}}, * output={"class"="Sonata\PageBundle\Model\Block", "groups"={"sonata_api_read"}}, * statusCodes={ * 200="Returned when successful", * 400="Returned when an error has occurred while block creation", * 404="Returned when unable to find page" * } * ) * * @param int $id A Block identifier * @param Request $request A Symfony request * * @return BlockInterface * * @throws NotFoundHttpException */ public function putBlockAction($id, Request $request) { $block = $id ? $this->getBlock($id) : null; $form = $this->formFactory->createNamed(null, 'sonata_page_api_form_block', $block, array('csrf_protection' => false)); $form->bind($request); if ($form->isValid()) { $block = $form->getData(); $this->blockManager->save($block); $view = FOSRestView::create($block); $serializationContext = SerializationContext::create(); $serializationContext->setGroups(array('sonata_api_read')); $serializationContext->enableMaxDepthChecks(); $view->setSerializationContext($serializationContext); return $view; } return $form; }