Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
vp-webdev
7 лет назад

Создание сайта на фреймворке 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

172
197.537 GOLOS
На Golos с August 2017
Комментарии (7)
Сортировать по:
Сначала старые