В чем я ошибаюсь, сэнсэй?=) Объясни новичку, пожалуйста. Ну вот, я обращаюсь к веб-серверу, т.е. делаю запрос. Веб-сервер принимает его и обрабатывает, затем отправляет результат обработки запроса мне, не?=)Хотя вот так лучше будет: я отправляю запрос->он обрабатывает его->выполняет код->отправляет мне ответ
я у тебя спрашиваю логику прохождения запроса от веб-сервера к твоему движку. а ты мне про какую-то там базу данных рассказываешь. "какая разница между помидором и трактором?" спрашиваю я. "помидор он красный, а у трактора дверь вот так открывается" - отвечаешь мне ты. ты прочитал про относительные пути? ты изучил отладочный лог рерайтера? ты вообще хотя бы поверхностно понимаешь как апач передает управление пхп-машине для обработки запроса? не надо мне про записи в базе данных рассказывать. мы сейчас отлаживаем этап разрешения запроса. тот который у тебя постоянно статусом 404 заканчивается потому что ты мартышка с гранатой.
Ты меня сам спросил про веб-сервер, я тебе ответил. Ты то про одно, то про другое. "мартышка с гранатой" - добавлю в список. Читал и про абсолютный и про относительные пути. Я отправляю GET-запрос на получение id.
о том. я тебя прошу рассказать мне всю логику прохождения запроса от принятия его веб-сервером до выбора пхп-машиной целевого скрипта. разрешение апачем, применение алиасов, рерайт. все интимные подробности включая пути. в том числе пути в файловой системе. можно своими словами. а ты мне что отвечаешь? тебе не кажется что я не это ожидаю от тебя услышать? вот эта твоя теория она ведь тебе нихерашечки не помогает понять как оно должно работать и как работает на самом деле и почему не работает как ты ожидаешь.
в модели - test.ru/core/models/models_index.php я обращаюсь к нужной мне таблице в БД, в моем случае -это pages. Записываю все это в массив. Затем в test.ru/core/controllers/controller_index я передаю данный массив в представление - test.ru/core/views/template.php. Там пробегаюсь форичем для получения алиасов из моего массива- $menu['url'], а также для получения id - $menu['id']. Ссылки выглядят так: Код (PHP): [url="<?=$menu['url'].'?id='.$menu['id'].';?>"]text[/url] А вот так выглядит роутер(test.ru/core/lib/route.php): Код (PHP): class Route { static function start() { // контроллер и действие по умолчанию $controller_name = 'index'; $action_name = 'index'; $routes = explode('/', $_SERVER['REQUEST_URI']); // получаем имя контроллера if (!empty($routes[1])) { $controller_name = $routes[1]; } // получаем имя экшена if (!empty($routes[2])) { $action_name = $routes[2]; } // добавляем префиксы $model_name = 'Model_'.$controller_name; $controller_name = 'Controller_'.$controller_name; $action_name = 'action_'.$action_name; // Для пользовательских шаблонов. Подцепляем файл с классом модели $model_file = strtolower($model_name).'.php'; $model_path = "core/models/".$model_file; if(file_exists($model_path)) { include "core/models/".$model_file; } // подцепляем файл с классом контроллера $controller_file = strtolower($controller_name).'.php'; $controller_path = "core/controllers/".$controller_file; if(file_exists($controller_path)) { include "core/controllers/".$controller_file; } else { Route::ErrorPage404(); } // создаем контроллер $controller = new $controller_name; $action = $action_name; if(method_exists($controller, $action)) { // вызываем действие контроллера $controller->$action(); } else { Route::ErrorPage404(); } } public static function ErrorPage404() { $host = 'http://'.$_SERVER['HTTP_HOST'].'/'; header('HTTP/1.1 404 Not Found'); header("Status: 404 Not Found"); header('Location:'.$host.'404'); } } Так выглядит файл .htaccess: Код (PHP): AddDefaultCharset utf-8 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule .* index.php [L]
ты все еще неправильно отвечаешь на вопрос. зачем мне знать про модели и контроллеры? может ты мне еще про высадку на луну расскажешь что-нибудь интересное?
я честно говоря перестаю понимать какая у тебя проблема. апач запрос принял, рерайтер запрос переписал, пхп-машина точку входа - индекс.пхп - выполнила, роутер реквест-ури разрбрал, модели-контроллеры-действия-виды ты объявил. что не так-то?
Индекс.пхп в корне есть. Рерайтер будем считать настроен. Тут путаница пошла из за того, что у него роутер перекидыает на 404, если не удалось загрузить модель/контроллер или нет метода контроллера. Поэтому вы можете разговаривать о разных 404. Я бы посмотрел на это в отрендеренном виде
Вот именно дело в том, что он id напрочь не принимает. Работает только с алиасом. Т.е. вот так работает только: Код (PHP): [url="<?=$menu['url'].';?>"]text[/url] Где $menu['url']- это алиас из БД - index(и другие), получается, что с ним ссылка выглядит вот так: Код (PHP): [url="index"]text[/url]
а что ты ожидаешь-то? вот есть у тебя урл. по этому урлу вебсервер рерайтится на пхп-машину. в пхп-машине у тебя типа роутер который делает модули-контроллеры-бла-бла-бла. что не так-то до сих пор? где ты тупишь?