black-lamp/yii2-email-templates

Module for adding templates for email letters across dashboard

3.1.1 2017-05-15 13:30 UTC

This package is not auto-updated.

Last update: 2024-11-09 20:39:38 UTC


README

Module for adding templates for email letters across dashboard

Build Status Latest Stable Version Latest Unstable Version License

Installation

Run command

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.

Applying migrations

yii migrate --migrationPath=@vendor/black-lamp/yii2-email-templates/src/migrations

Add module to application config

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.

Database language provider configuration properties
Config language provider configuration properties

Add component to application config

Component for getting the templates from database

'components' => [
    // ...
    'emailTemplates' => [
        'class' => bl\emailTemplates\components\TemplateManager::class
    ],
]

Using

  1. Create the template with markers across dashboard

Email subject

New message from {sitename}

Email body

Hello, {username}!

Text...

Go to the link - {link}

  1. Get template by key with component help
$template = Yii::$app->templateManager->getTemplate('test', 1);

This method return a Template object.

  1. 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)
    ]);
  1. Now you can using this template
Yii::$app->mailer->compose()
    // ...
    ->setSubject($template->subject)
    ->setHtmlBody($template->body)
    // ...