Skip to content

underwear/laravel-translatable-json-resource

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

laravel-translatable-json-resource

Spatie laravel translatable package + Laravel JsonResource

Installation

composer require underwear/laravel-translatable-json-resource

Usage

Require this package in your project and use TranslatableJsonResource instead of JsonResource.

You don't need to worry about things, just keep using JsonResource as you're used to.

Have a look:

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;
use Underwear\LaravelTranslatableJsonResource\TranslatableJsonResource;

class ArticleResource extends TranslatableJsonResource
{
    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'title' => $this->title, // translatable field,
            'body' => $this->body, // translatable field
            'created_at' => $this->created_at
        ];
    }
}

You only need to pass one additional argument locale:

use App\Http\Resources\ArticleResource;
use App\Models\Articles;

Route::get('/article/{id}', function ($id) {
    $article = Article::findOrFail($id);
    $locale = 'en';
    return new ArticleResource($article, $locale);
});

It also works with anonymous collections:

use App\Http\Resources\ArticleResource;
use App\Models\Articles;

Route::get('/articles', function () {
    $articles = Article::all();
    $locale = 'ru';
    return ArticleResource::collection($articles, $locale);
});

If you don't pass locale argument, it will use default locale from config('app.locale')

About

Spatie Laravel translatable + Laravel JsonResource

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages