/** * Set new template to a page. * * @param Page $page * @param SwitchTemplateRequest $request * * @return array */ public function switchTemplate(Page $page, SwitchTemplateRequest $request) { $connectedBlocks = $this->blocksAreConnected($page, $request->get('connected_blocks')); $template = Template::findOrFail($request->get('template_id')); $page->template()->associate($template)->save(); $this->updateTemplateBlocks($page, $request->get('connected_blocks')); event(new PageTemplateWasSwitched($page)); $url = route('zxadmin.page.edit', [$page->id, $page->template->blocks()->firstOrFail()->identifier]); return ['connectedBlocks' => $connectedBlocks, 'template' => $template, 'url' => $url]; }