Кэширование данных — Yii2

Кэширование данных заключается в сохранении некоторой переменной PHP в кэше и её последующем извлечении. Оно является основой для расширенных возможностей, таких как кэширование запросов и кэширование страниц. Типичные варианты кэширования и получения данных: Когда анонимной функции требуются данные из внешней области видимости: Компоненты кэширования Кэширование данных опирается на компоненты кэширования, которые представляют различные хранилища, такие как память, файлы и базы данных. Кеш-компоненты, как правило, зарегистрированы в качестве компонентов приложения, так что их можно настраивать и обращаться к ним глобально. Кэширование с использованием файлов: Кэширование с использованием Memcached с двумя серверами:…

Read More

Маршрутизация и создание URL — Yii2

Когда запрос от браузера поступает в файл index.php приложения, браузер анализируется на предмет того, какой контроллер и метод нужно вызвать, чтобы сформировать страницу. Данный процесс называется маршрутизацией. Обратный процесс — создание URL-адреса, когда известны контроллер и метод, которые необходимо вызвать. Менеджер URL Менеджер URL  представляет собой компонент приложения, который используется для анализа входящих запросов с помощью метода parseRequest(), а также для создания новых URL-адресов с помощью метода createUrl(). Запросы разбираются на маршруты, которые принимают вид controller/action. В данном случае менеджер URL-адресов сообщает Yii2, какой контроллер создавать и какой метод вызывать. Использование метода createUrl() для формирования URL-адресов гарантирует,…

Read More

Использование сессии — Yii2

Сессия позволяет сохранять пользовательские данные между запросами. При использовании чистого PHP можно получить доступ к этим данным через глобальную переменную $_SESSION. Yii2 инкапсулирует сессию в объект, что дает возможность обращаться к пользовательским данным в объектно-ориентированном стиле. К сессии можно получить доступ через компонент приложения session, который по умолчанию является экземпляром класса yii\web\Session. Открытие и закрытие сессии Открыть и закрыть сессию можно следующим образом: Можно вызывать open() и close() многократно без возникновения ошибок — внутри компонента все методы проверяют сессию на предмет того, открыта она или нет. Доступ к данным сессии Получить доступ к сохраненным в сессию данным…

Read More

Метки полей формы — Yii2

По умолчанию, метки полей формы автоматически генерируются из названия поля. Генерация выполняется методом generateAttributeLabel() класса yii\base\Model. Он преобразует первую букву каждого слова в верхний регистр, если имена переменных состоят из нескольких слов. Например, username станет Username, а firstName станет First Name. Если такой вариант не устраивает, нужно переопределить метод yii\base\Model::attributeLabels(): Теперь при создании формы в шаблоне, метки задавать не нужно: Интернационализация

Read More

Виджет ActiveForm — Yii2

Рассмотрим часто использующийся при разработке виджет ActiveForm. Виджет позволяет добавить на сайт форму с полями ввода, кнопками, списками выбора, чекбоксами, радио кнопками. Для создания формы подключаем в шаблоне следующие классы: Инициализация формы Текстовое поле Простое текстовое поле Текстовое поле с подсказкой и описанием Текстовое поле для e-mail Простое поле для e-mail Поле с подсказкой и описанием Поле для ввода пароля Простое поле для пароля Поле с подсказкой и описанием Многострочное текстовое поле Простое многострочное поле Многострочное поле определенного размера с описанием

Read More

Интернационализация — Yii2

Интернационализация (i18n) является частью процесса разработки приложения, которое может быть адаптировано для нескольких языков без изменения программной логики. Это особенно важно для веб-приложений, так как потенциальные пользователи могут приходить из разных стран. В Yii приложении определены два языка: исходный язык и язык перевода. На исходном языке написаны сообщения в коде приложения. Если исходным языком задан английский, то в коде можно использовать конструкцию: Язык перевода определяет, в каком виде будет отображаться текущая страница, т.е. на какой язык будут переведены оригинальные сообщения. Этот параметр может быть задан в конфигурации приложения: Кроме того,…

Read More

Виджеты — Yii2

Виджеты — это некоторые компоненты, которые предназначены в первую очередь для реализации элементов интерфейса и которые можно использовать многократно. Классическим примером такого элемента может быть меню. Меню используется практически на каждой странице сайта и от страницы к странице остается неизменным. То есть, на каждой странице нужно повторять один и тот же код для получения меню и его вывода. Но благодаря виджетам можно избежать этой утомительной процедуры и создать меню только один раз, а затем просто вызывать его. Размещаются виджеты в папке components, которую нужно создать в корне приложения. Для создания виджета…

Read More

Создание формы — Yii2

Для добавления формы на страницу предназначен класс yii\widgets\ActiveForm. Кроме того, имеются дополнительные методы в yii\helpers\Html. Форма в большинстве случаев связана с моделью, которая проверяет данные формы на сервере. Модель наследует класс yii\db\ActiveRecord или класс yii\base\Model. Создаем модель для формы обратной связи Создаем action для страницы, где будет форма обратной связи Создаем шаблон страницы формы обратной связи В результате получим такой html-код: Можно добавить для формы идентификатор и класс, а для полей формы — подсказки и placeholder-ы:

Read More

Добавление мета тегов — Yii2

Мета-теги — это html-теги, с помощью которых указываются дополнительные данные о странице сайта. Влияют на то, как отображается и какую позицию занимает страница в поисковой выдаче. При прочих равных условиях поисковики отдают предпочтение сайту с грамотно сформированными мета-тегами. Установка мета-тегов через контроллер: В layout-шаблон добавить вызов метода head(): В результате получим Мета-теги можно зарегистрировать и в view-шаблоне: Результат будет аналогичный: Установка $this->title в шаблоне переопределит значение, установленное в контроллере. Здесь стоит обратить внимание на следующее: если зарегистрировать один и тот же тег дважды, то этот мета-тег два раза и будет добавлен на страницу.…

Read More

Отправка данных AJAX — Yii2

Отправка данных на сервер без перезагрузки страницы уже стала стандартом де факто. За счет этого уменьшается время отклика, да и выглядит это достаточно привлекательно, сопровождаясь красивыми анимационными эффектами. Создадим форму обратной связи и изучим, как можно отправить данные на сервер без перезагрузки страницы. Форма обратной связи Для начала создадим новый action в контроллере SiteController: Для проверки данных формы создаем класс модели Feedback: Следующим шагом, создаем view-шаблон: Отправка формы с использованием AJAX Для начала зарегистрируем в view-шаблоне js-код, который будет отправлять данные формы с использованием объекта XmlHttpRequest: И внесем изменения в метод контроллера: Изменения получились минимальные.…

Read More