Виды
Вид - это просто веб-страница, или фрагмент страницы, как заголовок, подвал, боковая панель, и т.д. На самом деле, виды могут гибко встраиваться в другие виды (в других видах и т.д.) если Вам нужен этот тип иерархии.
Виды никогда не вызываются напрямую, они должны быть загружены контроллером. Запомните, в MVC фреймворке, контроллер выступает в качестве гаишника, поэтому он отвечает за извлечение нужного вида. Если Вы не читали Контроллер, стоит ознакомиться перед продолжением.
На примере контроллера, который был создан на странице контроллера, давайте добавим в него вид.
Создание вида
В текстовом редакторе, создайте файл blogview.php, и вложите в него:
<html>
<head>
<title>My Blogtitle>
head>
<body>
<h1>Welcome to my Blog!h1>
body>
html>
Затем сохраните файл в application/views/ каталог.
Загрузка вида
Чтобы загрузить определенный файл вида, следует использовать следующий метод:
$this->load->view('name');
Где name имя файла вида.
Примечание
Расширение файла .php не нужно указывать, если Вы используете расширение не отличное от .php.
Теперь, откроем файл контроллера Blog.php который мы создали ранее, и заменем echo оператор на метод загрузки файла вида:
php
class Blog extends CI_Controller {
public function index()
{
$this->load->view('blogview');
}
}
Если посетите свой сайт по URL сделаному ранее, Вы увидите новый вид. URL был подобный этому:
example.com/index.php/blog/
Загрузка нескольких видов
CodeIgniter будет грамотно обрабатывать несколько вызовов $this->load->view() внутри контроллера. Если будет более одного вызова, то они объеденятся в один. Например, Вы захотите иметь вид заголовка, вид меню, вид контента и вид подвала. Тогда это должно выглядеть вот так:
php
class Page extends CI_Controller {
public function index()
{
$data['page_title'] = 'Your title';
$this->load->view('header');
$this->load->view('menu');
$this->load->view('content', $data);
$this->load->view('footer');
}
}
В примере выше,использовали “динамически добавленные данные”, которые Вы увидите ниже.
Хранение видов подкаталоге
Файлы видов, могут храниться внутри подкаталога, если Вам предпочтительней этот метод. При этом Вам необходимо будет указать имя директорим при загрузке вида. Например:
$this->load->view('directory_name/file_name');
Добавление динамических данных в вид
Данные передаются из контроллера в вид в виде массива или объекта вторым параметром вида при его загрузке. Вот пример использования массива:
$data = array(
'title' => 'My Title',
'heading' => 'My Heading',
'message' => 'My Message'
);
$this->load->view('blogview', $data);
А тут пример использования объекта:
$data = new Someclass();
$this->load->view('blogview', $data);
Примечание
Если Вы используете объект, класс переменных будет преобразован в элементы массива.
Давайте попробуем это на файле контроллера. Откройте его и добавьте:
php
class Blog extends CI_Controller {
public function index()
{
$data['title'] = "My Real Title";
$data['heading'] = "My Real Heading";
$this->load->view('blogview', $data);
}
}
Теперь откройте ваш файл вида и измените текст на переменные, которые соответствуют ключам массива данных:
<html>
<head>
<title>php echo $title;?>
echo $heading;?>