composer.json - сценарий для Composer-а, содержит описание приложения
config/ - конфигурационные файлы
console.php - конфигурация консольного приложения
web.php - конфигурация Web приложения
commands/ - классы консольных команд
controllers/ - контроллеры
models/ - модели
runtime/ - файлы, которые генерирует Yii (логи, кэш и т.п.)
vendor/ - содержит пакеты Composer-а и сам фреймворк Yii
views/ - представления
web/ - корневая директория приложения. Доступна через Web
assets/ - статичные файлы (js, css)
index.php - точка входа в приложение Yii
yii - скрипт выполнения консольного приложения Yii
Такое разбиение по папкам соответствует логике архитектуры MVC. Далее в статье мы будем плотно работать файлами в папках "controllers" и "views".
Создание простейшего сайта
Для создания простейшего приложения на Yii нам потребуется запрограммировать две вещи: "действие контроллера" и "представление". Они будут работать так:- Приложение обработает запрос и выполнит нужное "действие контроллера".
- Действие контроллера отобразит "представление" пользователю.
Создание действия контроллера
После установки Yii был создан файлcontrollers/SiteController.php
. В нём находится одноимённый класс, который вызывает представления. К примеру, там есть метод "actionAbout", который показывает содержание страницы с информацией "о сайте" из коробочного примера:
/* Displays about page */
public function actionAbout(){
return $this->render('about');
}
Воспользуемся им, скопировав и модифицировав, добавив в класс контроллера ещё один публичный метод. В него будет входить только вызов одного метода "render":
public function actionMouse($animal = 'мыши'){
return $this->render(
'mouse',
['text' => 'Тише, ' . $animal . ', кот на крыше!']
);
}
В названии метода мы сохранили приставку "action", потому что Yii использует её чтобы распознавать методы-действия и обычные методы. Часть названия после "action" воспринимается как идентификатор действия (после измнения до нижнего регистра: если метод "actionMouse", то идентификатор "mouse").
В метод "render" передаётся название представления и массив с параметрами. Результат отображения передаётся через "return" в приложение, а затем пользователю.
Создание представления
Теперь сделаем представление. То есть оформим страницу, которая будет выводиться при нашем запросе. Для этого необходимо создать файл по адресуviews/site/mouse.php
.
При вызове метода "render" из действия, он начинает искать PHP файл по адресу views/ID_контроллера/имя_представления.php. В нашем случае контроллер называется "Site" (первая часть называния из "SiteController"), а представление называется "mouse" (вторая часть в нижнем регистре из "actionMouse")
Содержание файла будет таким:
<?php
use yii\helpers\Html;
?>
<?= Html::encode($text) ?>
При вызове страницы нашего приложения без параметров будет показана всего одна строка "Тише, мыши, кот на крыше". Но как можно заметить по коду метода "actionMouse", он может принимать параметр "$animal". предполагается, что этот параметр может быть передан пользователем, а следовательно необходимо экранировать все HTML небезопасные символы в нём, чтобы избежать XSS атаки.Для начала попробуем запустить наше приложение без параметров. Для этого обратимся к странице
/index.php?r=site/mouse
. Параметр "r" в строке адреса зарезервирован в Yii для указания контроллера, который обрабатывает запрос. А через слеш "/" (он же символ "%2F") указывается действие.На странице по этому адресу можно увидеть текст, обрамлённый шапкой и футером от стандартного сайта примера: Теперь испытаем вывод пользовательских данных, полученных через URL строку параметром. Для этого обратимся к странице
/index.php?r=site/mouse&animal=котята
. Результат будет таким:
Таким образом мы создали простейшее приложение (страницу сайта) на Yii.