Создание движка на MVC. Выводим страницы. Часть 4.
Всем доброго времени суток! Продолжаем создавать наш движок и выводить странички нашего сайтика!
Откроем файл paths.txt и определим там нужные нам константы
<?php
define('URL', 'http://engine.local/');
?>
Теперь изменим наш вид. Перейдем в файл header.php
//...
<link rel="stylesheet" href="<?php echo URL; ?>/public/css/default.css">
//...
И проделайте то же самое с подключением скриптов.
Теперь, если вы перейдете по ссылке
http://engine.local/help/other/
То увидите, что наш вид также отображается корректно. Таким образом мы решили проблему с путями, указав абсолютный путь. Плюс, теперь мы сможем легко его изменить, поменяв всего лишь одну константу.
Откроем контроллер help.php
<?php
public function __construct() {
parent::__construct();
}
public function index() {
$this->view->render('help/index');
}
?>
Т.е. что мы сделали: мы скопировали абсолютно все, кроме вызова родительского конструктора из конструктора и вставили в новый метод - index. Сделайте то же самое со всеми другими контроллерами.
Теперь откроем файл bootstrap.php и там, после вызова контроллера Index, вставим вызов метода index.
// ...
$controller = new Index();
$controller->index();
// ...
Теперь здесь же изменим проверки
// ...
$controller = new $url[0];
if(isset($url[2])) {
if(method_exists($controller, $url[1])) {
$controller->{$url[1]}($url[2]);
} else {
echo 'Error!';
}
} else {
if(isset($url[1])) {
$controller->{$url[1]}();
} else {
$controller->index();
}
}
// ...
Откроем контроллер index.php
public function index() {
echo 'INSIDE INDEX INDEX';
}
public function details() {
$this->view->render('index/index');
}
Но у нас теперь возникла опять же проблема с путями при переходе по ссылкам. Добавьте перед ссылкой на страницу вывод константы URL.
<a href="<?php echo URL; ?>index"></a>
На этом закончим, а в следующей статье продолжим решать возникшие проблемы и выводить страницы.
-
- Михаил Русаков
Комментарии (2):
spasiba
Ответить
При подключении стилей "<link rel="stylesheet" href="<?php echo URL; ?>/public/css/default.css">" надо убрать слэш перед public, так как в константе URL в конце пути уже есть слеш. Я не понял 2 пункта: 1. Зачем мы вывели все рендеры "$this->view->render('help/index');" из конструкторов в отдельные методы Index? Из-за этого код увеличился на 1 строку "$controller->index();". В чем плюс? 2. Причем тут метод details? По моему его рендер надо перенести в метод Index по логике или вообще рендер оставить в конструкторе.
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.