Создание сайта на фреймворке Yii2, часть 1 - Вступление
Данный фреймворк хорошо себя зарекомендовал для создания как простых, так и сложных веб-сайтов.
Я начну с установки его на веб-сервер, расскажу о принципе MVC и о том как его применять, а так же рассмотрим вопрос темизации проекта.
Установка фреймворка
Устанавливать Yii я будут из архива.
На данный момент ссылка на скачивание Yii 2.0.12
Свежую версию вы можете найти тут
Распаковывайте архив и настройте хост так, чтобы он смотрел на папку web.
В качестве веб-сервера я использую Nginx, у меня это выглядит следующим образом:
Так как я устанавливал сайт не через composer - то мне нужно добавить cookieValidationKey.
Прописана она в файле config/web.php
Я прописываю абсолютно произвольную строку:
Готово. Сайт можно открыть в браузере.
Парадигма MVC
Расшифровывается это понятие как Model View Controller
То есть для описания жизненного цикла программы используется три "типа данных", скажем так.
Модель - в ней описываются описываются данные, которые хранятся в системе.
Представление - отображает данные в нужном виде.
Контроллер - принимает запрос от пользователя, получает данные из модели и передаёт их в представление.
Стоит отметить, что модель и представление - необязательны. Если при запросе не нужно обращаться к данным, хранящимся на сайте - то можно передавать данные для ответа сразу в представление.
Если вашим ответом является json строка, или изображение, или просто какой-то набор данных не требующий дизайна(например вы разрабатываете API) - то ответ можно передавать прямо из контроллера.
Во фреймворке Yii(и не только в нём) всё это разнесено по папкам models, views и controllers
Контроллер
- Имя контроллера должно заканчиваться на Controller, например PostController, UserController, ImageController и т.п. Имя файла - точно такое же, с добавлением .php.
- По-умолчанию классы контроллеров наследуются от класса Controller.
- Все методы класса контроллера, имена которых начинаются на action будут урлами.
То есть если у вас есть класс GolosController и в нем есть метод actionBest - то на сайте у вас будет урл /golos/best , который будет выводить на экран то, что вернёт метод actionBest.
Модель
- Модели могут называться как угодно.
- По-умолчанию классы моделей наследуются от класса Model.
- Если экземпляр модели это запись в таблице БД - то класс модели наследуется от класса \yii\db\ActiveRecord.
- У большинства моделей есть "атрибуты" - это публичные или приватные свойства класса.
Представление
Представляет собой шаблон(обычный php файл), в котором будут доступны переменные, которые в него передаёт контроллер.
Чисто технически в шаблоне можно прописать любой код(так как это php файл), но это будет дурным тоном и лучше этого не делать.
Виджет
Очень удобный функционал создания информационных блоков. Например нужно вам в правой колонке вывести список новых пользователей, последних комментариев или случайное фото - для этого подойдёт виджет.
Виджеты хранятся в папке widgets в корне сайта. Каждый виджет - это класс с произвольным именем, унаследованный от класса \yii\bootstrap\Widget.
В классе виджета должен быть метод run, который и будет вызываться при отрисовке виджета(метод должен делать echo, а не return).
Если для виджета нужен шаблон - его можно хранить в папке views, расположенной в папке widgets
Модуль
Модуль - это миниатюрное приложение. Оно может включать в себя набор контроллеров, моделей и представлений.
Класс модуля должен храниться в корне папки модуля и наследоваться от класса \yii\base\Module
Для включения модуля его нужно прописать в конфигурации приложения.
Расширение
Это готовый набор скриптов, содержащий готовые функции, которые можно использовать в своих классах.
- Устанавливаются расширения через Composer или вручную.
- Расширения могут иметь самое разное предназначение: отладка, генерация изображений, отправка почты, http-клиент и т.п.
- Любое расширение может иметь зависимости.
Это вкратце что можно рассказать о фреймворке. В дальнейших уроках продолжим его изучение и применим всё это на практике.
Заглавное фото с сайта kwork.ru