it-devgroup/laravel-email-template-lite

2.0.0 2023-08-04 18:54 UTC

This package is auto-updated.

Last update: 2024-09-04 21:08:17 UTC


README

描述

  • 同步数据库中电子邮件模板表的命令
  • seeder 文件中的所有电子邮件模板
  • 从数据库中保存和加载电子邮件模板(CRUD 系统的 API)
  • 自定义变量(常用变量和每种模板类型的单独变量)
  • 通过配置文件自定义变量
  • 通过词典文件自定义变量的文本
  • 所有电子邮件模板的包装模板(blade)
  • 预览电子邮件模板
  • 自定义电子邮件模板模型和表

Lumen 安装

1. 打开文件 bootstrap/app.php

取消注释字符串

$app->withFacades();
$app->withEloquent();

添加在 $app->configure('app'); 之后

$app->configure('email_template_lite');

添加新的服务提供者

$app->register(\ItDevgroup\LaravelEmailTemplateLite\Providers\EmailTemplateServiceProvider::class);

2. 运行命令

创建配置文件

php artisan email:template:publish --tag=config

创建迁移文件

php artisan email:template:publish --tag=migration

生成表

php artisan migrate

创建资源文件

php artisan email:template:publish --tag=resource

laravel 安装

1. 打开文件 config/app.php 并搜索

    'providers' => [
        ...
    ]

添加到部分

        \ItDevgroup\LaravelEmailTemplateLite\Providers\EmailTemplateServiceProvider::class,

示例

    'providers' => [
        ...
        \ItDevgroup\LaravelEmailTemplateLite\Providers\EmailTemplateServiceProvider::class,
    ]

2. 运行命令

创建配置文件

php artisan vendor:publish --provider="ItDevgroup\LaravelEmailTemplateLite\Providers\EmailTemplateServiceProvider" --tag=config

创建迁移文件

php artisan email:template:publish --tag=migration

生成表

php artisan migrate

创建资源文件

php artisan vendor:publish --provider="ItDevgroup\LaravelEmailTemplateLite\Providers\EmailTemplateServiceProvider" --tag=resources

下一步:为 laravel 和 lumen 安装

1. 如果不存在,则创建电子邮件模板的 seeder 文件。在创建的 seed 文件中,您需要在其中添加一个静态方法(例如,public static function data())。该方法必须返回一个标准数组以填充数据库

2. 打开配置文件 config/email_template_lite.php 并将此类和方法添加到存在的参数中

'data' => [
    'class' => \Database\Seeders\EmailTemplateTableSeeder::class,
    'method' => 'data',
],

3. 设置 variable_parser 部分,用于外部或内部解析器

同步电子邮件模板的命令

php artisan email:template:sync

自定义模型

步骤 1

为电子邮件模板创建自定义模型

示例

文件: app/CustomFile.php

内容

<?php

namespace App;

class CustomFile extends \ItDevgroup\LaravelEmailTemplateLite\Model\EmailTemplate
{
}

如果需要更改表名或需要添加其他代码

<?php

namespace App;

class CustomFile extends \ItDevgroup\LaravelEmailTemplateLite\Model\EmailTemplate
{
    protected $table = 'YOUR_TABLE_NAME';
    
    // other code
}
步骤 2

打开 config/email_template_lite.php 并更改参数 "model",例如

...
// replace
'model' => \ItDevgroup\LaravelEmailTemplateLite\Model\EmailTemplate::class,
// to
'model' => \App\CustomFile::class,
步骤 3

在所有地方使用自定义 \App\CustomFile 模型代替标准模型 \ItDevgroup\LaravelEmailTemplateLite\Model\EmailTemplate

用法

初始化服务

$service = app(\ItDevgroup\LaravelEmailTemplateLite\EmailTemplateServiceInterface::class);

或注入

// use
use ItDevgroup\LaravelEmailTemplateLite\EmailTemplateServiceInterface;
// constructor
public function __construct(
    EmailTemplateServiceInterface $emailTemplateService
)

或使用助手

\ItDevgroup\LaravelEmailTemplateLite\Helpers\EmailTemplateHelper::getList();
\ItDevgroup\LaravelEmailTemplateLite\Helpers\EmailTemplateHelper::getById(1);
...

以后我们将使用变量 $service

电子邮件模板列表

所有电子邮件模板

$eloquentCollection = $service->getList();

带过滤器的电子邮件模板。所有过滤器参数不是必需的

$filter = (new \ItDevgroup\LaravelEmailTemplateLite\Model\EmailTemplateFilter())
    ->setIsPublic(true);
    
// or

$filter = (new \ItDevgroup\LaravelEmailTemplateLite\Model\EmailTemplateFilter())
    ->setType('type_name_by_like')
    ->setTitle('title_by_like')
    ->setIsActive(true);
$eloquentCollection = $service->getList($filter);

带分页的电子邮件模板

$lengthAwarePaginator = $service->getList(null, $page, $perPage);
$lengthAwarePaginator = $service->getList(null, 1, 10);

带排序的电子邮件模板

$eloquentCollection = $service->getList(null, null, null, $fieldName, $ascOrDesc);
$eloquentCollection = $service->getList(null, null, null, 'title', 'ASC');

按 ID 查找电子邮件模板

$emailTemplate = $service->getById(1);

按 TYPE 查找电子邮件模板

$emailTemplate = $service->getByType('emailTemplate_type');

创建电子邮件模板

$emailTemplate = \ItDevgroup\LaravelEmailTemplateLite\Model\EmailTemplate::register(
    'type',
    'Title',
    'Subject',
    'Body'
);
$emailTemplate->is_active = true;
$service->createModel($emailTemplate);

更新电子邮件模板

$emailTemplate = $service->getById(1);
$emailTemplate->title = 'Title';
$emailTemplate->subject = 'Subject';
$emailTemplate->body = 'Body';
$emailTemplate->is_active = true;
$service->updateModel($emailTemplate);

删除电子邮件模板

$emailTemplate = $service->getById(1);
$service->deleteModel($emailTemplate);

解析电子邮件模板的短代码

$emailTemplate = $service->getById(1);
// or
$emailTemplate = $service->getByType('type');
$service->render($emailTemplate, ['test_1' => '111', 'test_2' => 222]);
return $emailTemplate;

预览电子邮件模板

$service->preview($emailTemplate);
//
return $emailTemplate;

电子邮件模板变量

$emailTemplate = $service->getById(1);
// or
$emailTemplate = $service->getByType('type');
$emailTemplate->variables; // Collection
$emailTemplate->variables[0]->key;
$emailTemplate->variables[0]->description;

电子邮件模板包装器

return $service->emailWrapper();

设置新包装器(通过代码更改)的电子邮件模板

$service->setEmailWrapper('email-template.wrapper');

添加新模板的流程

  1. 添加到 seeder 文件

  2. 运行同步命令

php artisan email:template:sync
  1. 将电子邮件模板变量添加到配置文件 config/email_template_lite.php 中的 variables 部分

  2. 将变量的文本添加到词典文件 resources/lang/LANG_KEY/email_template_variables.php

添加新常用变量的流程

  1. 打开文件 config/email_template_lite.php 并将变量添加到 variables - common 部分,例如
'variables' => [
    'common' => [
        'site_name' => \App\CustomEmailTemplateVariableSiteName::class,
    ],
    ...
  1. 创建类 \App\CustomEmailTemplateVariableSiteName

  2. 该类必须是 ItDevgroup\LaravelEmailTemplateLite\EmailTemplateVariableInterface 接口的实现

  3. 该类必须包含一个公共方法 toString(): ?string

完整示例文件

<?php

namespace App;

use ItDevgroup\LaravelEmailTemplateLite\EmailTemplateVariableInterface;

class CustomEmailTemplateVariableSiteName implements EmailTemplateVariableInterface
{
    public function toString(): ?string
    {
        return 'site name';
    }
}

测试

测试需要 phpunit

vendor/bin/phpunit vendor/it-devgroup/laravel-email-template-lite