/** * 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(); }