Example #1
0
 /**
  * Save page layout with content.
  *
  * @param int $id Page identity.
  *
  * @return ResponseInterface
  *
  * @Route("/save-layout/{id:[0-9]+}", methods={"POST"}, name="admin-pages-save-layout")
  */
 public function saveLayoutAction($id)
 {
     $response = new Response();
     $response->setStatusCode(200, "OK");
     $response->setContent(json_encode(["error" => 0]));
     $layout = $this->request->get("layout");
     $items = $this->request->get("items");
     // Save page with widgets and layout.
     $page = Page::findFirstById($id);
     $page->layout = $layout;
     $page->setWidgets($items);
     $page->save();
     // Clear widgets cache.
     /** @var \Phalcon\Cache\BackendInterface $cache */
     $cache = $this->getDI()->get('cacheOutput');
     $prefix = $this->config->application->cache->prefix;
     $widgetKeys = $cache->queryKeys($prefix . WidgetController::CACHE_PREFIX);
     foreach ($widgetKeys as $key) {
         $cache->delete(str_replace($prefix, '', $key));
     }
     $this->flashSession->success('Page saved!');
     return $response->send();
 }