Создание движка на MVC. Выводим страницы. Часть 1.
Всем привет! Продолжаем строить собственное MVC приложение, и сегодня мы начнем заниматься выводом страниц.
Создадим файл View.php в папке libs.
<?php
class View {
public function __construct() {
echo 'Это вид';
}
}
?>
Теперь откроем наш главный файл index.php и подключим его.
require 'libs/View.php';
Открыв страницу, мы должны увидеть надпись "Это вид".
Теперь немного изменим наш класс, отвечающий за вид, добавив метод render, который будет заниматься выводом.
<?php
class View {
public function __construct() {
echo 'Это вид';
}
public function render($name) {
require 'views/'.$name.'.php';
}
}
?>
Теперь создадим папки index и error в папке views. Они будут отвечать за представление index страницы и страницы ошибок. В папке error создадим новый index.php файл и пропишем следующее
<?php require 'views/header.php'; ?>
Это страница ошибки!
Теперь создадим файл header.php в самой папке views с таким содержанием
<html>
Header
<body>
Перейдем в файл error.php, который находится в папке error и добавим в конструктор вызов метода render.
<?php
public function __construct() {
// код
$this->view->render('error/index');
}
?>
Теперь на странице мы увидим "Header Это страница ошибки!"
Давайте немного улучшим наш контроллер, добавив к нему перед вызовом метода render следующее:
<?php
public function __construct() {
// код
$this->view->msg = 'Страницы не существует!';
$this->view->render('error/index');
}
?>
А теперь в файле index.php, который отвечает за вид ошибки, вместо нашей надписи "Это страница ошибки!" выведим то, что хранится в свойстве msg.
<?php require 'views/header.php'; ?>
<hr>
<?php echo $this->msg; ?>
Теперь нам вывелась наша надпись.
Давайте теперь создадим модель help_model.php в папке models.
<?php
class Help_Model extends Model {
public function __construct() {
echo 'Модель help_model';
}
}
?>
Теперь откроем контроллер help.php из папки controllers и добавим вызов нашей модели
<?php
class Help extends Controller {
// код
public function other($arg = false) {
// код
require 'models/help_model.php';
$model = new Help_Model();
}
}
?>
Дальше нужно создать базовую модель. Для этого создайте файл model.php в папке libs.
<?php
class Model {
public function __construct() {
// $this->database = new Database();
}
}
?>
Наша модель будет работать с базой данных, но пока что закомментируем это, т.к. у нас еще нет базы данных.
Подключим нашу базовую модель в нашем главном файле index.php.
require 'libs/Bootstrap.php';
require 'libs/Controller.php';
require 'libs/model.php';
require 'libs/View.php';
Итак, на этом сегодня остановимся. Мы уже сделали некоторый вывод на страницу, а в следующих статьях продолжим это улучшать. Спасибо за внимание и удачного кодинга!
-
- Михаил Русаков
Комментарии (8):
надпись "это вид" должна появится на главной странице? (site.ru) У меня выводится надпись "Контроллер обработки ошибок" что не так? еще заметил "Перейдем в файл error.php, , который находится в папке error" вроде этот файл еще не создавали?
Ответить
"Для этого создайте файл model.php в папке libs." замените на "Для этого создайте файл Model.php в папке libs."... соответственно в "index.php" нужно написать вместо "require 'libs/model.php';" с большой буквы Model.
Ответить
Все равно не понятно. "Перейдем в файл error.php, , который находится в папке error" на каком этапе этот файл появился?
Ответить
Да, описание действий несколько не точное. :-)
Ответить
Народ, кто в тупике.!? Читайте строчку - "Перейдем в файл error.php, который находится в папке error..." как - "Перейдем в файл error.php, который находится в папке controller... "
Ответить
Во! Спасибо! А то тоже не понял куда впихнуть.
Ответить
Дойдя до конца этого урока у меня появилась 500 ошибка. Что-то сбилось с .htaccess. Работают только страницы с указанием роута. Например site.loc/index/ или site.loc/help/
Ответить
Я думаю нельзя использовать много одинаковых файлов типа index.php error.php
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.