ermac / text_builder
该软件包最新版本(dev-master)没有可用的许可证信息。
创建各种动态文本
dev-master
2022-03-09 10:43 UTC
Requires
- illuminate/support: ~8
- morilog/jalali: 3.*
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'),...]);