madnh / laravel-model-labels
支持获取模型字段的标签,从模型::$labels 属性或 Laravel 的本地化功能中获取
0.4.1
2017-03-01 08:30 UTC
Requires
- php: >=5.4.0
- laravel/framework: ^5.0
This package is not auto-updated.
Last update: 2024-09-28 19:52:52 UTC
README
支持获取模型字段的标签,从模型::$labels 属性或 Laravel 的本地化功能中获取
安装
- 将此包添加到
composer.json
composer require madnh/laravel-model-labels
- 在模型类中使用
MaDnh\LaravelModelLabels\LabelsTrait
use MaDnh\LaravelModelLabels\LabelsTrait; class Country extends Model { use SoftDeletes, LabelFieldTrait; //Model contents...
属性
static::$label_path
本地路径前缀,默认为 model_<model_name_in_snake_case>
。示例
public static $label_path = 'flag'; //Default is model_flag
static::$labels
模型标签。属性名(作为键)和标签(作为值)的数组
示例
public static $labels = [ 'id' => 'ID', 'full_name' => 'Họ và tên' ];
static::$labels_trans_map
标签转换映射,当在标签缓存、本地化、静态 $labels 中找不到属性标签时使用。
如果属性未定义在此数组中,将使用自动转换函数 - 尝试获取小写属性名的标题大小写标签:id => Id。
特别适用于缩写词,如 ID、VIP、CMND、..
示例
public static $labels_trans_map = ['id' => 'ID']; //Auto convert label is Id
static::$label_cached
缓存标签。优先级最高。
用法
标签优先级
模型缓存 > Laravel 国际化 > 模型 static::$labels
定义标签
标签可以存储在模型的静态属性中,也可以存储在本地化文件中。本地化文件中的标签将覆盖模型的静态属性
- 在模型类中定义标签
定义一个名为 $labels
的静态属性,它是一个标签数组,键是字段名,值是标签。标签可以是字符串或可调用值。如果它是可调用值,则将使用其结果作为标签,该可调用函数有 1 个参数,即需要获取标签的字段。
class Country extends Model { use SoftDeletes, LabelFieldTrait; //... public static $labels = [ 'name' => 'Name of country', 'flag' => function($field){ return 'Flag ('.$field.')'; }]; //...
- 在本地化文件中定义标签
将文件添加到网站的本地化文件夹中,命名为 model_<model_name_in_snake_case>.php
。此本地化文件返回一个字符串数组。模型的字段标签存储在键 field
中,它是一个字段名和标签的数组。
<?php return [ 'field' => [ 'name' => 'Tên quốc gia' ] ];
获取标签
使用以下方法获取标签
示例
namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; use App\Models\Country; class CreateCountryRequest extends FormRequest { public function rules() { return [ 'name' => 'required' ]; } public function attributes() { return Country::labels('name'); }