Module for adding templates for email letters across dashboard
composer require black-lamp/yii2-email-templates
or add
"black-lamp/yii2-email-templates": "^3.0.0"
to the require section of your composer.json.
yii migrate --migrationPath=@vendor/black-lamp/yii2-email-templates/src/migrations
Backend module for create, edit and delete email templates
'modules' => [
// ...
'email-templates' => [
'class' => bl\emailTemplates\EmailTemplates::class,
'languageProvider' => [
'class' => bl\emailTemplates\providers\DbLanguageProvider::class,
'tableName' => 'language',
'idField' => 'id',
'nameField' => 'name'
]
],
]
languageProvider
it's a class that implements LanguageProviderInterface.
You can use language providers from this extension or create yours.
This extension has two language providers.
Option | Description | Type | Default |
---|---|---|---|
tableName | Name of table in database with languages | string | language |
idField | Name of field in language table with primary key | string | id |
idName | Name of field in language table with language name | string | name |
Option | Description | Type | Default |
---|---|---|---|
languages | Array with languages. Example [1 => 'English', 2 => 'Russian'] |
array | - |
defaultLanguage | Array with default language. Array must contains one value. Example [1 => 'English'] |
array | - |
Component for getting the templates from database
'components' => [
// ...
'emailTemplates' => [
'class' => bl\emailTemplates\components\TemplateManager::class
],
]
- Create the template with markers across dashboard
Email subject
New message from {sitename}
Email body
Hello, {username}!
Text...
Go to the link - {link}
- Get template by key with component help
$template = Yii::$app->templateManager->getTemplate('test', 1);
This method return a Template object.
- You should to parse the markers in email subject and email body
$template->parseSubject([
'{sitename}' => $sitename
]);
$template->parseBody([
'{username}' => Yii::$app->user->identity->firstname,
'{link}' => Url::toRoute(['/confirm', 'token' => $token], true)
]);
- Now you can using this template
Yii::$app->mailer->compose()
// ...
->setSubject($template->subject)
->setHtmlBody($template->body)
// ...