taylornetwork / name-formatter
Laravel 的名称格式化工具
Requires
- php: >=7.1
- illuminate/support: >=5.5
Requires (Dev)
- orchestra/testbench: ^3.5
- psy/psysh: ^0.9.4
README
一个可定制的 Laravel 名称格式化类。
安装
通过 Composer
$ composer require taylornetwork/name-formatter
发布配置
$ php artisan vendor:publish
这将在您的 config
目录中添加 nameformatter.php
用法
通过传递一个 Illuminate\Eloquent\Model
的实例来创建类的新的实例,并调用 format()
假设我们在 App\Customer
有一个 Customer 模型
use Illuminate\Eloquent\Model; class Customer extends Model { protected $fillable = [ 'first_name', 'last_name', 'address', ]; }
我们想要为我们的客户添加一个 fullName
属性。我们可以创建一个 Laravel 将用来为我们创建属性的方法 getAttribute
。有关更多信息,请参阅 Laravel Eloquent 文档。
use Illuminate\Eloquent\Model; use TaylorNetwork\Formatters\Name\Formatter; class Customer extends Model { protected $fillable = [ 'first_name', 'last_name', 'address', ]; public function getFullNameAttribute() { $formatter = new Formatter($this); return $formatter->format(); } }
获取客户的完整名称
$customer = App\Customer::create([ 'first_name' => 'John', 'last_name' => 'Doe', 'address' => '123 Main Street' ]); echo $customer->fullName;
返回
'John Doe'
默认情况下,Formatter
类将连接 first_name
属性、一个空格和 last_name
属性。
特质
此包包含一个特质,您可以将其添加到您的模型中,以添加 fullName
属性。
use Illuminate\Eloquent\Model; use TaylorNetwork\Formatters\Name\FormatsFullName; class Customer extends Model { use FormatsFullName; protected $fillable = [ 'first_name', 'last_name', 'address', ]; }
然后,您可以通过默认配置访问全名:
echo $customer->fullName;
覆盖格式化器配置
您可以通过在您的模型中覆盖 formatterConfig
方法来覆盖使用特质时的格式化器配置
use Illuminate\Eloquent\Model; use TaylorNetwork\Formatters\Name\FormatsFullName; class Customer extends Model { use FormatsFullName; protected $fillable = [ 'first_name', 'last_name', 'address', ]; public function formatterConfig(&$formatter) { $formatter->style('L, F'); } }
可用方法
format ()
返回格式化名称。
map (string | array $field, string | null $modelField)
默认情况下,Formatter
类将在传递给它的模型上查找 first_name
和 last_name
属性。如果您传递的模型具有不同的属性名用于首名和姓氏,您可以传递一个关联数组给 map
函数或两个字符串。
对于具有名为 fName
的首名属性和名为 lName
的姓氏属性的模型
$formatter = new TaylorNetwork\Formatters\Name\Formatter($model); $formatter->map([ 'first_name' => 'fName', 'last_name' => 'lName' ])->format(); // OR $formatter->map('first_name', 'fName')->map('last_name', 'lName')->format();
style (string $style)
默认情况下,Formatter
类将格式化名称为 $first_name . ' ' . $last_name
。您可以使用 style
函数来覆盖此样式。style
接受一个字符串,其中包含您希望 Formatter
使用进行格式化的格式。
字符串中的任何其他字符都将出现在格式化的名称中
示例
$model->first_name = 'John'; $model->last_name = 'Doe'; $formatter = new TaylorNetwork\Formatters\Name\Formatter($model);
获取首字母和姓氏
$formatter->style('f L')->format(); // Returns 'J Doe'
获取姓氏的首字母和名字
$formatter->style('l, F')->format(); // Returns 'D, John'
获取首字母和姓氏的首字母
$formatter->style('fl')->format(); // Returns 'JD'
您甚至可以在样式字符串中添加其他字符
$formatter->style('F_L')->format(); // Returns 'John_Doe'
字符串中的每个键都将被替换,因此您可以这样做。(尽管我不知道您为什么要这样做)
$formatter->style('fffF lllL')->format(); // Returns 'JJJJohn DDDDoe'
配置
运行 php artisan vendor:publish
后,配置文件 nameformatter.php
将位于您的 config
目录中。在那里,您可以设置您想要的默认格式样式、字段映射等。
鸣谢
- 作者: Sam Taylor
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。