taylornetwork/name-formatter

Laravel 的名称格式化工具

1.3.3 2019-02-18 01:11 UTC

This package is auto-updated.

Last update: 2024-09-18 20:28:00 UTC


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_namelast_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 目录中。在那里,您可以设置您想要的默认格式样式、字段映射等。

鸣谢

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件