Package Data | |
---|---|
Maintainer Username: | esomkin |
Maintainer Contact: | esomkin@gmail.com (Evgeniy Somkin) |
Package Create Date: | 2015-03-16 |
Package Last Update: | 2015-04-14 |
Home Page: | |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-12-17 03:01:34 |
Package Statistics | |
---|---|
Total Downloads: | 31 |
Monthly Downloads: | 0 |
Daily Downloads: | 0 |
Total Stars: | 0 |
Total Watchers: | 2 |
Total Forks: | 0 |
Total Open Issues: | 0 |
This is a Laravel package for translatable models.
##Demo
Creating new translations
App\Models\Article::create([
'url' => 'your-url',
'en' => [
'name' => 'Article english name',
'title' => 'Article english title',
],
'fr' => [
'name' => 'Article french name',
'title' => 'Article french title',
],
]);
Getting translated attributes
$article = App\Models\Article::where('url', '=', 'your-url')->first();
App::setLocale('en');
echo $article->name;
echo $article->translate('en')->name;
echo $article->en->name;
Setting translated attributes
$article->url = 'your-url-change';
$article->name = 'Article english name change';
$article->en->name = 'Article english name change';
$article->translate('fr')->title= 'Article french title change';
$article->save();
or
$article->save([
'url' => 'your-url-change',
'es' => [
'name' => 'Article spain name',
'title' => 'Article spain title',
],
]);
or
$article->fill([
'en' => [
'name' => 'Article english name',
'title' => 'Article english title',
],
'es' => [
'name' => 'Article spain name',
'title' => 'Article spain title',
],
])->save();
##Installation in 4 steps
###Step 1: Install package
Add the package in your composer.json by executing the command.
composer require goodvin/langust:dev-master
Next, add the service provider to config/app.php
'Goodvin\Langust\LangustServiceProvider',
###Step 2: Migrations
For example, we need to translate Article
model. It is require an extra ArticleLang
model.
Schema::create('articles', function(Blueprint $table){
$table->increments('id');
$table->string('url', 200);
$table->timestamps();
});
Schema::create('article_langs', function(Blueprint $table){
$table->increments('id');
$table->string('name', 200);
$table->string('title', 200);
$table->integer('article_id')->unsigned();
$table->enum('lang', [
'en',
'fr',
'es',
])->index();
$table->unique([
'article_id',
'lang'
]);
$table->foreign('article_id')
->references('id')
->on('articles')
->onDelete('cascade');
});
###Step 3: Models
Article
should use the trait Goodvin\Langust\Langust
.ArticleLang
.// /app/Models/Article.php
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Article extends Model
{
use \Goodvin\Langust\Langust;
protected $fillable = [
'url',
];
protected $langust = [
'name',
'title',
];
}
// /app/Models/ArticleLang.php
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ArticleLang extends Model
{
public $timestamps = false;
}
It is no need to set fillable fields in translatable model :)
###Step 4: Configuration
Laravel 5.*
php artisan vendor:publish