Создание сайтов на yii framework

Обновлено: 04.07.2024

Yii можно использовать для разработки любого вида веб-приложений. Благодаря своей основе компонентов, архитектуре и сложной поддержки кэширования, фреймворк подходит для разработки крупномасштабных проектов, таких как порталы, форумы, системы управления контентом (CMS), систем электронной коммерции, RESTful веб-сервисов и т.д.

Yii реализует для использования MVC (Model-View-Controller) архитектурный шаблон и способствует организации кода на основе этого шаблона.

Yii является full-stack фреймворком, предоставляя множество проверенных и готовых к использованию функций: построитель запросов и ActiveRecord для реляционных и NoSQL баз данных, RESTful API, поддержку многоуровневого кэширования и т.п.

Yii чрезвычайно расширяемый фреймворк в котором можно заменить почти каждый кусочек кода и разрабатывать нужные расширения.

Yii предоставляет Gii - визуальный интерфейс для автоматической генерации контроллеров, моделей и отображений.

Установка

Установка Yii 2.0, различных расширений и их управление осуществляется с помощью Composer - менеджера пакетов PHP. Однако это также можно сделать и вручную, скачав и распаковав zip архив.

Установка через Composer сводится к вводу самых простых команд через консоль:

Требования PHP

Yii 2.0 требует PHP 5.4 или выше, по сравнению с Yii 1.1, который использует PHP версии 5.2. В результате, есть много различий на уровне языка.

  • Namespaces
  • Анонимные функции
  • Короткий синтаксис массива
  • Короткая запись открывающих и закрывающих php тегов
  • SPL классы и интерфейсы.
  • Поздние статические привязки.
  • Дата и время.
  • Traits.
  • intl расширение PHP для интернационализации.

Namespace

В Yii 2.0 используются пространства имен, например, yii\web\Request. Имена присваиваются по структуре каталогов. Допустим, yii\web\Request указывает на то, что файл класса web/Request.php размещается в этом каталоге.

Компоненты и объекты

Yii 2.0 содержит два основных класса: класса: yii\base\Object и yii\base\Component. Класс объекта это легкий базовый класс, который определяет свойства объекта с помощью геттеров и сеттереров (getters и setters). Компонент класса поддерживает события и поведение.

Конфигурация объекта

Класс объекта вводит единый способ конфигурирования объектов. Любой потомок класс объекта должен объявить его конструктор:

Последний параметр конструктора должен принять массив конфигурации, содержащий пары имя-значение для инициализации свойств в конце конструктора. Вы можете переопределить метод init() для выполнения инициализации работы, которая должна быть сделана после того, как конфигурация была применена.

Таким образом, вы можете создавать и настраивать новые объекты, используя массив конфигурации:

События

В Yii 2 можно использовать любое имя события, инициировав событие вызовом метода trigger():

Чтобы прикрепить, обработчик к событию, нужно использовать метод on() :

Псевдонимы пути

Yii 2.0 позволяет использование псевдонимов путей для файлов/каталогов и адресов. Путь псеводонима начинается с символа @ , чтобы отличить псевдонимы от нормальных путей файлов и каталогов, а также адресов. Например, псевдоним @yii относится к каталогу установки Yii. Пути псевдонимов поддерживаются в большинстве мест основного кода Yii.

Допустим, yii\caching\FileCache::$cachePath может занять как псеводоним пути, так и нормальный путь к каталогу. Псевдоним пути также тесно связан с классом имен.

Рекомендуется, чтобы псевдоним пути был определен для каждого корневого пространства имен, тем самым позволяя использовать Yii класс автозагрузчика без какой-либо дополнительной конфигурации. Например, поскольку @yii относится к каталогу установки Yii, класс yii\web\Request может автоматически загружается.

Views

Объект yii\web\View представляет собой вид части шаблона MVC. Если вы хотите получить доступ к данным контроллера или виджета в представлении, вы можете использовать $this->context .

Для вывода шаблона нужно использовать $this->render() , который возвращает результат рендинга.

Кроме того, в качестве основного языка шаблона, Yii 2.0 также позволяет использовать такие популярные шаблонизаторы как: Smarty и Twig. Для использования этих шаблонизаторов, необходимо настроить компонент представления приложения, установив свойство View::$renderers .

Models

Yii 2.0 использует yii\base\Model в качестве базовой модели, а также имеет новый метод scenarios() позволяющий объявлять поддерживаемые сценарии, и указать, в соответствии с каким сценарием производить работу с атрибутами.

В данном примере используется два сценария: backend и frontend. Для сценария backend, атрибуты email и role являются обязательными и могут быть массово присвоены. Для сценария frontend, атрибут email может быть массово присвоен, в то время как role не может. И email и role должны быть проверены с помощью метода rules() используемого для объявления правил проверки.

Controllers

Yii 2.0 использует yii\web\Controller в качестве базового класса контроллера. yii\base\Action является базовым классом для классов действий. Действие в контроллере должно возвращать содержимое:

Widgets

Yii 2.0 использует yii\base\Widget в качестве базового класса виджетов. Виджет начинается с методов begin() , and() и widget() следующим образом:

Темы (Themes)

Темы работают на основе механизма отображения пути, который отображает путь к файлу просмотра исходных текстов на тематическом пути просмотра файлов.

Консольные приложения

Консольные приложения организованы как контроллеры, как и веб-приложения. Контроллеры консоли должны проходить от yii\console\Controller . Чтобы выполнить команду консоли, используйте <route> , где <route> обозначает маршрут контроллера (например, sitemap/index). Дополнительные анонимные аргументы передаются в качестве параметров к соответствующему методу действия контроллера, в то время как названные аргументы обрабатываются в соответствии с декларациями в yii\console\Controller::options() .

Фильтры действий (Action Filters)

Действия фильтров реализуются с помощью поведения. Новый встраиваемый фильтр определяется с помощью yii\base\ActionFilter . Чтобы использовать фильтр, прикрепите класс фильтра к контроллеру в качестве поведения. Например, чтобы использовать yii\filters\AccessControl фильтр, нужно:

Assets

Представляет собой набор asset bundle файлов (например, файлы JavaScript, CSS файлы, файлы изображений и т.д.) в пределах каталога. Каждый asset bundle представлен как класс, расширяющий yii\web\AssetBundle . Регистрируется asset bundle с помощью yii\web\AssetBundle::register() .

Помощники

В Yii 2.0 используются статические вспомогательные классы, например, такие как:

  • yii\helpers\Html
  • yii\helpers\ArrayHelper
  • yii\helpers\StringHelper
  • yii\helpers\FileHelper
  • yii\helpers\Json

Формы

Построитель запросов (Query Builder)

Yii 2.0 представляет собой запрос БД с точки зрения объекта запроса, который может быть превращен в SQL заявление с помощью QueryBuilder. Например:

Active Record

Yii 2.0 вводит много изменений в Active Record. Два наиболее очевидных из них связаны с построением запросов и реляционной обработкой запросов. Построитель запросов используется с помощью класса yii\db\Query , который наследует все методы построения запросов.

Плюсы и минусы

Плюсы

Минусы

Автор


Программист с образованием в области IT и опытом разработки на разных языках. Автор статей по программированию. Общий опыт работы в сфере IT и интернета более 5 лет.

Всех приветствую, с вами Сергей Никонов. В моем новом уроке Yii2 я расскажу как создать страницу, а также вы узнаете что такое паттерн MVC, что такое контроллер (controller), что такое вид (view), что такое layouts в фреймворке Yii2 и многое другое. Эти уроки входят в курс Yii2.

Смотрите видео как создать страницу используя Yii2 фреймворк

Часть 1

Часть 2

Что такое MVC

Для того, чтобы вы смогли создать вашу первую страницу в фреймворке Yii2, вам необходимо понимать что такое MVC.

MVC расшифровывается как Model (модель) - View (вид) - Controller (контроллер). Model отвечает за связь и работой с данными, например модель User может извлекать информацию из базы данных, обновлять информацию в базе данных и так далее.

В этом уроке мы не будем работать с Model, а рассмотрим Controller и View. Controller является связующим звеном между Model и View и обрабатывает эти взаимодействия, а также входные данные. View, если говорить простыми словами, это визуальная часть вашего веб-приложения, которую видит пользователь сайта, иными словами - это файлы с html-версткой, которые подключаются в методы контроллеров.

Что такое Controller (контроллер)

Контроллеры можно представить как интерфейсы между Models и Views. Для того, чтобы понять что такое контроллер, достаточно взглянуть на URL вашего локального сайта Yii2:

site - это название контроллера, а about - это метод в контроллере, который в Yii2 называется как Action.

Пример action страницы Yii2 about в контроллере SiteController:

Если вы удалите строчку return $this->render('about'); и напишите вместо нее:

перейдя на страницу About, вы увидите надпись hello. Вы даже можете вывести через echo html тэги, которые будут отображаться на странице about:

Yii2 фреймворк. Как создать свою страницу.

Но так делать не нужно, так как это нарушает принцип MVC. Верстку необходимо выносить в отдельный файл.

Что такое View

Файлы с версткой, которые подключается в actions контроллеров называется Views (Виды). Все что видят пользователи вашего сайта - блоки, html-формы, кнопки, иными словами дизайн страницы описанный html и css является Views. Вы не должны помещать верстку ваших страниц напрямую в экшены контроллеров, а делать это нужно через специальные файлы view, затем эти файлы с версткой должны встраиваться в контроллеры:

Строчкой $this->render('about') в методе actionAbout контроллера SiteController рендерится (отрисовывается) View страницы About.

Как создать страницу в Yii2 фреймворке

Создать страницу используя фреймворк очень просто.

1. Перейдите в контроллер SiteController. Он находится в каталоге frontend - controllers и откройте файл SiteController.php.

2. Найдите и скопируйте action (метод) под названием actionAbout() и вставьте скопированный код ниже.

3. Переименуйте скопированный метод actionAbout() в actionHello() и в строчке $this->render('about') замените 'about' на 'hello':

4. Создайте файл hello.php в каталоге frontend - views и поместите в него следующий код:

и если вы все сделали верно, вы должны увидеть такую страницу:

Уроки Yii2. Как создать страницу.

Обратите внимание на кнопки, которые мы создали и их дизайн. CSS-классы, которые мы использовали, принадлежат Bootstrap 3. Но откуда Yii2 знает про Bootstrap 3? Дело в том, что в фреймворк Yii2 по умолчанию встроен Bootstrap 3 и вы можете сразу использовать все возможности верстки сетки и компоненты Bootstrap 3 в вашем проекте Yii2. А если вы незнакомы с Bootstrap 3, но хотите научиться им пользоваться, обязательно пройдите мой интерактивный курс Bootstrap 3 на сайте FructCode.

Как вы видите создать страницу с помощью Yii2 фреймворка очень просто. Фреймворк Yii2 очень функциональный, но для того, чтобы знать как им пользоваться, вам необходимо знать что такое объектно-ориентированном программирование (ООП) и уметь программировать применяя парадигму ООП. Объектно-ориентированное программирование на первый взгляд кажется очень сложным и я постарался простым языком на примерах рассказать основы объектно-ориентированного программирования в моем интерактивном курсе PHP и MySQL.

Кроме ООП вам необходимо изучить структуру фреймворка Yii2 Advanced, а также ключевые концепции Yii2, такие как:

- Dependency Injection Container

И другие. Также вам необходимо уметь взаимодействовать с базой данный с помощью фреймворка Yii2 и знать следующее:

В этой статье попробуем разобраться как устроены приложения на фоеймвлоке Yii. Затем модифицируем стандартный пример "basic", создав ещё одну страницу с простейшим выводом информации из параметра запрова. Но сначала взглянем и опишем структуру файлов в корневом каталоге фреймворка: Такое разбиение по папкам соответствует логике архитектуры MVC. Далее в статье мы будем плотно работать файлами в папках "controllers" и "views".

Создание простейшего сайта

  1. Приложение обработает запрос и выполнит нужное "действие контроллера".
  2. Действие контроллера отобразит "представление" пользователю.

Создание действия контроллера

После установки Yii был создан файл controllers/SiteController.php . В нём находится одноимённый класс, который вызывает представления. К примеру, там есть метод "actionAbout", который показывает содержание страницы с информацией "о сайте" из коробочного примера: Воспользуемся им, скопировав и модифицировав, добавив в класс контроллера ещё один публичный метод. В него будет входить только вызов одного метода "render":

В названии метода мы сохранили приставку "action", потому что Yii использует её чтобы распознавать методы-действия и обычные методы. Часть названия после "action" воспринимается как идентификатор действия (после измнения до нижнего регистра: если метод "actionMouse", то идентификатор "mouse").

В метод "render" передаётся название представления и массив с параметрами. Результат отображения передаётся через "return" в приложение, а затем пользователю.

Создание представления

Теперь сделаем представление. То есть оформим страницу, которая будет выводиться при нашем запросе. Для этого необходимо создать файл по адресу views/site/mouse.php .

При вызове метода "render" из действия, он начинает искать PHP файл по адресу views/ID_контроллера/имя_представления.php. В нашем случае контроллер называется "Site" (первая часть называния из "SiteController"), а представление называется "mouse" (вторая часть в нижнем регистре из "actionMouse")

Содержание файла будет таким: При вызове страницы нашего приложения без параметров будет показана всего одна строка "Тише, мыши, кот на крыше". Но как можно заметить по коду метода "actionMouse", он может принимать параметр "$animal". предполагается, что этот параметр может быть передан пользователем, а следовательно необходимо экранировать все HTML небезопасные символы в нём, чтобы избежать XSS атаки.

Для начала попробуем запустить наше приложение без параметров. Для этого обратимся к странице /index.php?r=site/mouse . Параметр "r" в строке адреса зарезервирован в Yii для указания контроллера, который обрабатывает запрос. А через слеш "/" (он же символ "%2F") указывается действие.

На странице по этому адресу можно увидеть текст, обрамлённый шапкой и футером от стандартного сайта примера: Теперь испытаем вывод пользовательских данных, полученных через URL строку параметром. Для этого обратимся к странице /index.php?r=site/mouse&animal=котята . Результат будет таким: Таким образом мы создали простейшее приложение (страницу сайта) на Yii.

Эта статья поможет как установить фреймворк с нуля, так и разместить уже существующий проект.

1. Создайте сайт в разделе Хостинг. Подключитесь к вашему аккаунту хостинга по SSH (инструкция) и перейдите в каталог с сайтом:

Для установки и работы с Yii необходимо наличие менеджера зависимостей Composer. Если вы ещё не установили его, воспользуйтесь нашей статьей.

2. Если вы уже загрузили файлы проекта в каталог www, то его следует переименовать:

Если сайт был только что создан, то удалить:

3. Установка Yii

Если у вас уже есть готовый проект и вы не планируете выполнять установку с нуля, то этот шаг нужно пропустить.

Для установки последней стабильной basic-версии Yii воспользуйтесь следующей командой:

Advanced-версия устанавливается так:

Команда установит фреймворк в каталог yii_project. Вы можете выбрать имя каталога по своему желанию. Он должен быть пустой или не существовать.
Для завершения установки версии advanced необходимо выполнить скрипт init для выбора типа проекта (production или development):

4. Укажите актуальные логин, пароль и имя базы данных в конфигурационном файле.
Реквизиты MySQL автоматически отправляются на вашу почту после создания сайта. Также они доступны на странице сайта в панели управления (Хостинг - Сайт - вкладка MySQL).

Для сохранения используйте комбинацию клавиш Ctrl+O, а для выхода Ctrl+X

Версию advanced можно отличить наличием каталогов frontend и backend, в basic-версии они отсутствуют.

При установке advanced-версии с нуля следует применить миграцию:

5. На нашем хостинге индексный файл сайта должен быть размещен в каталоге

Однако для Yii требуется размещение этого файла в каталоге web. Решение заключается в создании символической ссылки с именем www, которая указывает на каталог web.

Cоздайте символическую ссылку:

Для advanced нужно создать два симлинка - для самого сайта и для административного раздела:

В целях безопасности можно заменить admin на что-нибудь менее очевидное.

Если А-записи в настройках DNS уже вступили в силу, то сайт становится доступен с хостинга.

Читайте также: