Создание сайтов на 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:
Но так делать не нужно, так как это нарушает принцип 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 и поместите в него следующий код:
и если вы все сделали верно, вы должны увидеть такую страницу:
Обратите внимание на кнопки, которые мы создали и их дизайн. 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".
Создание простейшего сайта
- Приложение обработает запрос и выполнит нужное "действие контроллера".
- Действие контроллера отобразит "представление" пользователю.
Создание действия контроллера
После установки 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 уже вступили в силу, то сайт становится доступен с хостинга.
Читайте также: