Package Data | |
---|---|
Maintainer Username: | madnh |
Maintainer Contact: | dodanhmanh@gmail.com (MaDnh) |
Package Create Date: | 2016-12-30 |
Package Last Update: | 2017-03-01 |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-12-17 03:04:14 |
Package Statistics | |
---|---|
Total Downloads: | 3,116 |
Monthly Downloads: | 2 |
Daily Downloads: | 0 |
Total Stars: | 7 |
Total Watchers: | 2 |
Total Forks: | 3 |
Total Open Issues: | 1 |
Support get label of model's fields, from model::$labels property or Laravel's localization features
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
Prefix of locale path, default is model_<model_name_in_snake_case>
. Example:
public static $label_path = 'flag'; //Default is model_flag
static::$labels
Model labels. Array of properties name (as keys) and labels (as value)
Example:
public static $labels = [
'id' => 'ID',
'full_name' => 'Họ và tên'
];
static::$labels_trans_map
Label trans map, use when can't find label of a property in label cached, locale, static $labels.
If the property is not defined in this array, will use the auto convert function - which try to get the label in title case of lower cased property name: id => Id .
Special useful for acronym words like ID, VIP, CMND,..
Example:
public static $labels_trans_map = ['id' => 'ID']; //Auto convert label is Id
static::$label_cached
Cached labels. Priority is highest.
Model cache > Laravel i18n > Model static::$labels
Label can store in a static property of model, or in a locale file. Labels in locale files will override model's static property
Define a static property named $labels
, it is an array of labels, with key is fields name, value is label.
Label maybe a string or callable value. If it's a callable value, then result of it will used as label, that callable has 1 argument, it is the field need to get label.
class Country extends Model
{
use SoftDeletes, LabelFieldTrait;
//...
public static $labels = [
'name' => 'Name of country',
'flag' => function($field){
return 'Flag ('.$field.')';
}];
//...
Add file to site's locale folder, named model_<model_name_in_snake_case>.php
.
This locale file return an array of string. Labels of model's fields store at a key named is field
, it is an array of field name and label.
<?php
return [
'field' => [
'name' => 'Tên quốc gia'
]
];
Use following methods to get labels
| Method | Example | Description |
|---------------------------|------------------------------------------------------|-----------------------------|
| modelLabel() | Country::modelLabel()
| Get label of model class |
| labels() | Country::labels()
| Get all of lables of fields |
| labels() | Country::labels('name', 'flag', 'code', ['title'])
| Get label of fields |
| label() | Country::label('name')
| Get label of a field |
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');
}