От автора: приветствую вас, друзья. В этой статье мы продолжим знакомиться с фреймворком Yii. На очереди у нас очередной компонент архитектуры MVC — виды. Компонент Yii2 view отвечает за представление данных, проще говоря, за показ оформленных данных. Продолжим?
Итак, в прошлых статьях мы с вами работали с компонентом Controller паттерна MVC. Контроллеры в Yii2 отвечают за прием запроса, полученного от пользователя и обращение к нужным моделям и видам для возвращения запрошенных данных в ответ на полученный от пользователя запрос.
Для оформления данных контроллер подключает вид (view), используя метод render (еще говорят рендеринг вида). Что нам для начала нужно знать о представлениях? Представления хранятся в папке views. Если мы заглянем в эту папку, то изначально увидим там следующую картину:
В папке views после установки фреймворка находятся две папки: layouts и site. К папке layouts мы вернемся в следующих статьях, пока можно просто сказать, что в этой папке находятся шаблоны приложения Yii2.
Сейчас нам больше интересна папка site. В этой папке хранятся все виды контроллера SiteController. Думаю, вы уже догадались, что все представления будущих контроллеров будут упорядоченно храниться в своих папках, которые называются по имени контроллера. Например, в прошлой статье мы создали контроллер TestController, соответственно, все его виды мы будем помещать в папку test. Давайте ее создадим.
Теперь что касается файлов представлений. Здесь работает похожая логика и, полагаю, что многие из вас уже догадываются, как называть виды. Правильно, их принято именовать по названиям действий (action) контроллера. Как вы помните, наш TestController включает в себя пару действий: actionIndex и actionPage. Соответствующие им файлы представлений мы назовем index.php и page.php:
Как же теперь осуществить рендеринг? Проще говоря, как подключить нужный вид? Сделать это поможет метод render(). Данный метод принимает в себя два параметра: строковое наименование файла и массив данных. При этом второй параметр является необязательным, т.е. если нам не нужно передавать никаких данных в вид, тогда мы можем ограничиться только первым параметром.
Давайте вернемся в тестовый контроллер и подключим нужные виды.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class TestController extends Controller { public function actionIndex() { return $this->render('index'); } public function actionPage() { return $this->render('page'); } } |
Теперь взглянем на стартовую страницу сайта в браузере.
Как видим, подключился нужный нам вид. Давайте теперь попробуем передать пару переменных в вид. Это можно сделать, к примеру, так:
1 2 3 4 5 6 7 8 9 |
public function actionPage() { $name = 'John'; $surname = 'Doe'; return $this->render('page', [ 'name' => $name, 'surname' => $surname ]); } |
А в виде их можно вывести так:
1 2 3 |
<h1>Вид page</h1> <p>Имя: <?= $name ?></p> <p>Фамилия: <?= $surname ?></p> |
Также возможно кому-то понравится передавать данные, используя функцию PHP compact():
1 2 3 4 5 6 |
public function actionPage() { $name = 'John'; $surname = 'Doe'; return $this->render('page', compact('name', 'surname')); } |
Результат в браузере при этом будет тем же. На этом, пожалуй, остановимся. Больше о фреймворке Yii вы можете узнать из наших бесплатных или платных уроков. Также создание простейшего блога на Yii2 можно посмотреть в этом цикле уроков.