/** * Метод рендерит страницу, которая находится по маршруту LIW_WEB . 'views/' . $folder . '/' . $view . '.php' * В вид передается массив $attr пропущенный через функцию extract, что делает в нем доступными переменные, * соответствующие ключам массива. * * @param $folder * @param $view * @param null $attr * @throws \Exception */ public function render($folder, $view, $attr = null) { if (!empty(ob_get_contents())) { ob_end_clean(); } ob_start(); $this->view_path = LIW_WEB . 'views' . DIRECTORY_SEPARATOR . $folder . DIRECTORY_SEPARATOR . $view . '.php'; if (is_file($this->view_path)) { $this->view_folder = $folder; if (isset($attr) && is_array($attr)) { $this->attr = $attr; extract($attr, EXTR_OVERWRITE); } /** * Добавляем панель разработчика, если выставлен соответствующий флаг */ if (defined('DEVELOP') && DEVELOP === true) { include __DIR__ . '/develop/view/develop_panel.php'; } include $this->view_path; } else { throw new \Exception('File: ' . $this->view_path . ' not exist!'); } if (Request::isAjax()) { echo ob_get_clean(); return; } $this->view = ob_get_clean(); /** * нужен особый вывод ошибок, т.к. ошибка в лэйауте будет выводиться дважды, как обычная ошибка, и как ошибка * внутри вывода ошибки. */ require LIW_WEB . 'views/layouts/' . self::$layout . '.php'; //подключение layout }
public function showError($error) { $this->view = $error; if (Request::isAjax()) { echo '<div class="error">' . $error . '</div>'; return; } require_once LIW_CORE . 'core/error/view/index.php'; }