/** * Start routing */ public static function run() { if (!is_file(ROUTER_CACHE_FILE)) { crash('The cache-route-file is not exists'); } require_once ROUTER_CACHE_FILE; if (!function_exists('getRoute')) { crash('Route function "getRoute" does not exists'); } $route = getRoute(); if (Cache::e_array($route)) { crash('Route value is not correct in cache-route-file'); } /** * Start finding */ try { if (isset($route[URI])) { $data = $route[URI]; throw new Exception(); } $onlyRegexp = array_filter(array_keys($route), function ($element) { if (substr($element, 0, 1) === '~') { return true; } return false; }); foreach ($onlyRegexp as $pattern) { if (preg_match($pattern, URI, $match)) { controllerManager::$matchUrl = $match; $data = $route[$pattern]; throw new Exception(); } } } catch (Exception $e) { require_once $controllerPath = WORK_SPACE_FOLDER_PATH . 'controllers' . DS . $data['controller'] . 'Controller.php'; $render = new Render(); $render->execute($data, $data['controller'], $controllerPath); } Render::generate404Error(); }
<html> <head> <link href='https://fonts.googleapis.com/css?family=PT+Sans&subset=latin,cyrillic,cyrillic-ext' rel='stylesheet' type='text/css'> <link rel="stylesheet" href="/public/css/bootstrap.min.css"> <link rel="stylesheet" href="/public/css/style.css"> <title><?php echo controllerManager::$title; ?> </title><?php echo controllerManager::getResources(); ?> <meta charset="utf-8"> </head> <body> <nav class="navbar navbar-inverse navbar-fixed-top"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="/">Online store of goods</a> </div> <div id="navbar" class="navbar-collapse collapse"> <?php if (controllerManager::$isAuthorized) { ?> <button onclick="document.location.assign('/profile'); return false;" type="button" class="ua3 userActionButton btn btn-success">My profile</button> <button onclick="document.location.assign('/sign_out'); return false;" type="button" class="ua1 userActionButton btn btn-success">Sign out</button>
/** * Init checking form * @param $fields * @return $this */ protected function formInit($fields) { $initialValues = array_map(function ($element) { return ['message' => '', 'valid' => true, 'name' => $element]; }, $fields); self::$formFieldsError = array_combine($fields, $initialValues); if (!empty($absence = array_diff($fields, array_keys($_POST)))) { array_walk($absence, function ($item) { $this->setFieldError($item, 'The field "' . ucfirst($item) . '" is required'); }, $this); } $this->post = array_map(function ($element) { return trim($element); }, $_POST); return $this; }
/** * Set js & css given from controller properties */ private function setResourcesFromControllerProperty() { if (isset($this->routingInfo['css'])) { if (is_array($this->routingInfo['css'])) { controllerManager::$css = array_merge(controllerManager::$css, $this->routingInfo['css']); } else { controllerManager::$css[] = $this->routingInfo['css']; } } if (isset($this->routingInfo['js'])) { if (is_array($this->routingInfo['js'])) { controllerManager::$js = array_merge(controllerManager::$js, $this->routingInfo['js']); } else { controllerManager::$js[] = $this->routingInfo['js']; } } }