本文整理汇总了PHP中PageManager::findPage方法的典型用法代码示例。如果您正苦于以下问题:PHP PageManager::findPage方法的具体用法?PHP PageManager::findPage怎么用?PHP PageManager::findPage使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PageManager
的用法示例。
在下文中一共展示了PageManager::findPage方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: start
static function start()
{
try {
Session::start();
//загрузка параметров движка
Settings::$ENGINE = Engine::loadSettings();
//проверка закрыт сайт или нет
if (Settings::$ENGINE['site'] == 0) {
View::renderClosed('Извините, доступ на сайт закрыт');
}
View::$template = Settings::$ENGINE['template'];
Controller::$lang = Settings::$ENGINE['default_lang'];
$route = urldecode(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
//считываем из сессии id пользователя (-1 назначаем неавторизованным пользователям)
$user_id = -1;
if (isset($_SESSION['uid']) && !empty($_SESSION['uid']) && is_numeric($_SESSION['uid'])) {
$user_id = $_SESSION['uid'];
}
/*$pwd = "ruh";
$hash = Crypt::password_hash($pwd);
if(Crypt::password_verify($pwd,$hash)) echo "true";
else echo "false";
exit;*/
/*print_r(AclModel::getRoles());
exit;*/
//проверяем, не был ли передан тип запроса (например при ajax запросе)
$request_type = null;
if (isset($_POST["request_type"]) && is_numeric($_POST["request_type"])) {
$request_type = $_POST["request_type"];
ini_set('display_errors', 0);
} else {
$page = PageManager::findPage($route == '/' ? '/main' : $route);
if (!$page) {
throw new Exception404();
}
View::setTitle($page['title']);
View::css(explode('|', $page['css']));
View::js(explode('|', $page['js']));
//TODO: замутить парсер META
$args = json_decode($page['content'], true);
foreach ($args as $key => $val) {
$class = new $args[$key]['c']();
View::$args[$key] = $class->{$args}[$key]['m'](!empty($args[$key]['a']) ? $args[$key]['a'] : null);
}
//print_r(View::$args);
View::render('index', Settings::$ENGINE['template']);
}
//Если страницы не были найдены, то обращаемся напрямую к контроллеру
$routes = explode('/', $route);
array_shift($routes);
if ($routes) {
//задаем контроллер и его метод по умолчанию
$controller_name = Settings::$DEFAULT_CONTROLLER;
$action = 'index';
//распарсиваем адресную строку
//определяем имя контроллера
if (!empty($routes[0])) {
$controller_name = $routes[0];
}
//его метод
if (!empty($routes[1])) {
$action = $routes[1];
}
//все остальные параметры адресной строки преобразуем в аргументы
$i = 2;
$arg = array();
while (!empty($routes[$i])) {
$arg[] = $routes[$i++];
}
//создаем объект для работы контроллером
if (!class_exists($controller_name)) {
throw new Exception404();
}
$controller = new $controller_name();
//проверяем, если это пост запрос c request_type, обрабатываем его соответственно
if ($request_type != null) {
//проверяем, есть ли данный метод у контроллера
if (method_exists($controller_name, $action)) {
//если метод есть, то
//запускаем главную функцию обработки запроса
$res = $controller->{$action}(isset($arg) ? $arg : NULL);
//выводим результат
echo json_encode(array('answer' => $res));
} else {
//если функция не видна, то выдаем сответствующюю инфу
echo json_encode(array("error" => 'Не найдена функция для обработки запроса (' . $controller_name . '::' . $action . ')!'));
}
exit;
}
//если это не запрос, просто вызываем метод
$controller->{$action}(isset($arg) ? $arg : NULL);
unset($routes);
} else {
throw new Exception404();
}
} catch (mysqli_sql_exception $e) {
if (Settings::$DEBUG) {
echo '<br>DEBUG: mysqli_sql_exception: ' . $e->getMessage() . ' => ' . $e->getCode() . '<br>';
}
Log::writeLog($e->getMessage() . ' ' . $e->getCode());
//.........这里部分代码省略.........