ermac/text_builder

该软件包最新版本(dev-master)没有可用的许可证信息。

创建各种动态文本

dev-master 2022-03-09 10:43 UTC

This package is auto-updated.

Last update: 2024-09-09 16:17:11 UTC


README

TextBuilder 是一个用于创建各种动态文本的 Laravel 软件包。

安装

使用包管理器 composer 安装 TextBuilder。

composer require ermac/text_builder

在 config/app.php 文件的 Service Providers 部分中放置提供者

'providers' => [    
    ...
    Ermac\TextBuilder\TextBuilderServiceProvider::class,
    

然后输入别名类

'aliases' => [    
    ...
    'TextBuilder' => Ermac\TextBuilder\TextBuilderFacade::class,

然后运行命令

php artisan vendor:publish --provider="Ermac\TextBuilder\TextBuilderServiceProvider" --tag=config

配置

在 config 路径和 textBuilder.php 文件中,您可以指定放置参数的符号

'sign' => '%'

您还可以全局定义参数并解释每个参数

'global_parameters' => [
        'date' => 'description',
        'time',
    ]

用法

在您想要定义参数的模型中,首先调用 HasParams 特性

use Ermac\TextBuilder\HasParams;
class User extends Authenticatable
{
    ...
    use HasParams;
}

参数

在您想要定义参数的模型中,首先调用 params 属性,然后在 params 属性中输入所需的参数。请注意,定义的参数必须与数据库表中的列名相同。

protected $params = [
    'name' => 'description',
    'email',
     ];

如果您想要输入所有列,可以使用 * 符号

protected $params = [
    '*'
     ];

如果您想要忽略一些列,可以使用 ^ 符号。

protected $params = [
    '^password,created_at'
     ];

关系

您可以使用一对一、一对多或多对多关系方法来配置这些参数。

一对一

protected $params = [
       'wallet-balance',
    ];

public function wallet()
{
    return $this->hasOne(Wallet::class);
}

一对多

protected $params = [
       'orders-tracking_code',
       'orders-price',
       'orders-product-title',
    ];

public function orders()
{
    return $this->hasMany(Order::class);
}

您可以使用不同的关系无限期地使用

Order.php
class Order extends Model
{
    public function product()
    {
        return $this->belongsTo(Product::class);
    }
}

多对多

protected $params = [
      'roles-name'
    ];

public function roles()
{
    return $this->belongsToMany(Role::class,'user_has_roles');
}

方法

获取参数

$params = TextBuilder::getParameters();

输出

Array ( 
    [0] => Array ( [param] => %orders_price% [description] => ) 
    [1] => Array ( [param] => %users_name% [description] => description ) 
    [2] => Array ( [param] => %users_email% [description] => ) 
    [3] => Array ( [param] => %users_wallet-balance% [description] => ) 
    [4] => Array ( [param] => %users_orders-price% [description] => ) 
    [5] => Array ( [param] => %date% [description] => description ) 
    [6] => Array ( [param] => %time% ) 
) 

如果您想获取某些模型的参数,请这样做

$params = TextBuilder::getParameters([Model::class,...]);

如果您想忽略参数,可以使用此参数

$params = TextBuilder::getParameters('',\App\Models\User::class , ...);

现在

$text = "Hi %users_name%, your wallet balance is $ %wallet-balance%";
$text = TextBuilder::make($text,\App\Models\User::find(1) );

输出

"Hi james, your wallet balance is $ 1000";

如果需要输入多个模型,可以使用此模式

$text = TextBuilder::make($text,[\App\Models\User::find(1),\App\Models\Order::find(1)] );

如果需要忽略参数,可以使用此模式

$text = TextBuilder::make($text,[\App\Models\User::find(1),\App\Models\Order::find(1)] ,['users_password',...]);

如果需要手动输入参数,如全局参数,可以使用以下方法

$text = TextBuilder::set($text,['time',...],[\Carbon\Carbon::make(now())->format('H:m'),...]);

许可证

MIT