定制 folklore/eloquent-localizable 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

folklore/eloquent-localizable

Composer 安装命令:

composer require folklore/eloquent-localizable

包简介

Laravel 4 and 5 package to add localization capabilities to Eloquent Models

README 文档

README

Simple Laravel 4 and 5 package to add localization capabilities to Eloquent Models

Installation

Dependencies:

Installation:

1- Require the package with Composer

$ composer require folklore/eloquent-localizable

Usage

Configuration

This package use a Trait to add localization capabilities to your Eloquent modal. Basically it will add a locales relation to your model and provide a sync method for easy saving.

For example, if you have a Page model and you would like to add localized title, description. You first add the trait to your Page class.

use Folklore\EloquentLocalizable\LocalizableTrait;

class Page extends Eloquent {
    
    use LocalizableTrait;
    
}

By default the trait will look for a [MODEL_NAME]Locale model. So in this example, it will looks for a PageLocale. Just create a PageLocale class next to your Page model.

use Folklore\EloquentLocalizable\LocaleModel;

class PageLocale extends LocaleModel {
    
    protected $table = 'pages_locales';
    
}

You can change the locale model class by overiding the getLocaleModelClass method.

use Folklore\EloquentLocalizable\LocalizableTrait;

class Page extends Eloquent {
    
    use LocalizableTrait;
    
    protected function getLocaleModelClass()
    {
        return 'App\Models\CustomLocaleModel';
    }
    
}

You also need to create the table for you localization. Following the example, we will create a migration for a pages_locales table.

Schema::create('pages_locales', function(Blueprint $table)
{
	$table->increments('id');
	$table->integer('page_id')->unsigned();
	$table->string('locale',2);
	$table->string('title');
	$table->string('description');
	$table->timestamps();
	
	$table->index('page_id');
	$table->index('locale');
});

Getting locales

You can now use the locales relation on your Page model.

Getting a page with all locales

$page = Page::with('locales')->first();

//Getting the title for a specific locale
echo $page->locales->fr->title;

//Looping through all locales
foreach($page->locales as $locale)
{
    echo $locale->locale.': '.$locale->title;
}

Getting a page with a specific locale

$page = Page::withLocale('fr')->first();

//Getting a the title
echo $page->locale->fr->title;

If you want to always include the locales when fetching a page.

use Folklore\EloquentLocalizable\LocalizableTrait;

class Page extends Eloquent {
    
    use LocalizableTrait;
    
    protected $with = ['locales'];
    
}

Saving locales

You can use the syncLocales method to save your locales.

$locales = array(
    'en' => array(
        'title' => 'A page',
        'description' => 'This is the description of this page'
    ),
    'fr' => array(
        'title' => 'Une page',
        'description' => 'Ceci est la description de cette page'
    )
);

//or

$locales = array(
    array(
        'locale' => 'en',
        'title' => 'A page',
        'description' => 'This is the description of this page'
    ),
    array(
        'locale' => 'fr',
        'title' => 'Une page',
        'description' => 'Ceci est la description de cette page'
    )
);

$page = new Page();
$page->save(); //We need an id for this page, so we save before.

$page->syncLocales($locales);

统计信息

  • 总下载量: 1.32k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 6
  • 点击次数: 1
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 5
  • Watchers: 3
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2014-07-02

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固