コード例 #1
0
 /**
  * {@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;
 }
コード例 #2
0
 /**
  * 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;
 }