PHP code example of itstructure / laravel-multilingual-tools

1. Go to this page and download the library: Download itstructure/laravel-multilingual-tools library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

itstructure / laravel-multilingual-tools example snippets


        use Illuminate\Database\Seeder;
        

        class DatabaseSeeder extends Seeder
        {
            public function run()
            {
                $this->call(MultSeeder::class);
            }
        }
        

use Illuminate\Database\Schema\Blueprint;
use Itstructure\Mult\Classes\MultilingualMigration;

class CreatePagesTable extends MultilingualMigration
{
    public function up()
    {
        $this->createMultilingualTable('pages', function (Blueprint $table) {
            $table->string('title', 64);
            $table->text('description')->nullable();
            
        }, function (Blueprint $table) {
            $table->unsignedTinyInteger('active')->default(0)->index();
            $table->string('alias', 64)->index();
        });
    }
    
    public function down()
    {
        $this->dropMultilingualTable('pages');
    }
}

    $model = Page::findOrFail($id);
    echo $model->title_en;
    

    $model = Page::findOrFail($id);
    $model->title_en = 'New title value';
    $model->save();
    

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Itstructure\Mult\Traits\MultilingualModelTrait;

class Page extends Model
{
    use MultilingualModelTrait;
    
    protected $table = 'pages';
    
    protected $fillable = ['active', 'alias'];
}

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class PageLanguage extends Model
{
    protected $table = 'pages_languages';
    
    protected $fillable = ['pages_id', 'languages_id', 'title', 'description'];
    
    public function page() // It is not necessary to create
    {
        return $this->hasOne(Page::class, 'id', 'pages_id');
    }
    
    public function language() // It is not necessary to create
    {
        return $this->hasOne(Language::class, 'id', 'languages_id');
    }
}

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Itstructure\Mult\Models\Language;
use Itstructure\Mult\Helpers\MultilingualHelper;

class StorePageRequest extends FormRequest
{
    protected $shortLanguageList = [];
    
    public function __construct()
    {
        parent::__construct();
        
        $this->shortLanguageList = Language::shortLanguageList();
    }
    
    public function authorize()
    {
        return true;
    }
    
    public function rules()
    {
        $multilingualRules = MultilingualHelper::fieldsTransformer([
            'title' => '= MultilingualHelper::fieldsTransformer([
            'title' => __('messages.title'),
            'description' => __('messages.description')
            
        ], function ($fieldValue) {
            return $fieldValue;
            
        }, $this->shortLanguageList);
        
        return array_merge([
            'active' => __('messages.activity'),
            'alias' => __('messages.alias')
            
        ], $multilingualAttributes);
    }
}

[
    "active" => "quired|string|min:3|max:64",
    "title_en" => "_en" => "nullable|string",
    "description_ru" => "nullable|string"
]

namespace App\Http\Controllers;

use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Routing\Controller;
use Itstructure\Mult\Models\Language;
use Itstructure\Mult\Helpers\MultilingualHelper;
use App\Models\Page;
use App\Http\Requests\StorePageRequest;

class PageController extends Controller
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
    
    public function create()
    {
        $languageList = Language::languageList();
        
        return view('page.create', compact('languageList'));
    }
    
    public function store(StorePageRequest $request)
    {
        MultilingualHelper::fill(new Page(), $request->all())->save();
        
        return redirect()->route('page_list');
    }
}