Download the PHP package infotech/yii-message-renderer without Composer
On this page you can find all versions of the php package infotech/yii-message-renderer. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download infotech/yii-message-renderer
More information about infotech/yii-message-renderer
Files in infotech/yii-message-renderer
Package yii-message-renderer
Short Description Message rendering component for Yii 1.1
License MIT
Informations about the package yii-message-renderer
Шаблонизация сообщений
Практически в каждом продукте требуется функционал отправки сообщений (email, sms и т.п.) на основании пользовательских шаблонов.
Эта библиотека предоставляет концептуальное решение задач, связанных с шаблонизацией сообщений, таких как:
- определение контекста отрисовки сообщения (определяющего набор подстановок и порядок их извлечения из моделей или результата запроса к БД);
- собственно отрисовку сообщения (наполнение шаблона данными);
- вывод помощи по подстановкам;
- потоковую отрисовку большого количества сообщений (с использованием
CDataProviderIterator
).
Использование
Чтобы подключить библиотеку к продукту запросим его через composer
Ключевым элементом является компонент приложения MessageRendererComponent
.
Для использования компонента необходимо подключить его в конфигурации приложения:
где SomeMessageContext
и AnotherMessageContext
имена классов контекстов отрисовки сообщений,
о которых расскажем чуть ниже.
Теперь для отрисовки одного сообщения достаточно написать
а для отрисовки множества сообщений нужно использовать
Контекст отрисовки сообщений
Каждый класс контекста отрисовки сообщений является производным от абстрактного
Infotech\MessageRenderer\MessageContext
и определяет состав подстановок и способ извлечения
данных.
В интерфейсе класса контекста есть метод renderTemplate($templateStringOrArray, $data)
, который
принимает строку шаблона (или массив шаблонных строк) и данные для наполнения шаблона,
а возвращяет отрисованную строку (или такой же массив отрисованных строк с теми же ключами).
Приведем пример класса контекста. Предположим у нас есть модель User
, а также Task
с
отношениями "assignee" (BELONGS_TO к User
) и "reporter" (BELONGS_TO к User
).
Ну забудем зарегистрировать контекст в конфигурации компонента.
Теперь, чтобы отправить email уведомление об изменении статуса задачи напишем
а для групповой отправки, пишем