public function findOne($name, $type) { $page = $this->models->pageModel->findOneByName($name); if (!isset($page)) { $this->render404(); return; } switch ($type) { case 'html': /** @var Page $page */ $this->render('/page', ['content' => $page->getContent()]); break; case 'xml': $xml = new \SimpleXMLElement("<xml/>"); $variables = (array) $page; foreach ($variables as $key => $variable) { $key = str_replace("models\\Page", "", $key); $xml->addChild($key, $variable); } header("Content-Type: application/xml"); echo $xml->saveXML(); break; case 'json': $variables = (array) $page; $json = []; foreach ($variables as $key => $variable) { $oldKey = $key; $key = str_replace("models\\Page", "", $key); $json[$key] = $variables[$oldKey]; } $json['content'] = View::partial("page", ['content' => $page->getContent()]); if (array_key_exists('redirect', $_GET) && $_GET['redirect'] === 'true') { $json['header'] = $this->partial('header', ['user' => $this->user, 'pages' => $this->pages]); } $this->echo_json_encode($json); break; default: $this->render404(); } }
protected function partial($viewName, $data = []) { return View::partial($viewName, $data); }