Pavel Zaněk PavelZanek.com
Vyberte jazyk

Jak vytvořit továrnu pro modely s balíčkem Astrotomic/laravel-translatable pro překlady

Tento článek vás provede procesem vytváření továrny pro modely v Laravelu s použitím balíčku pro překlady. Seznamte se s výhodami využití továren a překladů v Laravelu. Zjistěte, jak snadno a efektivně generovat testovací data pro vaše aplikace.

Publikováno 18.06.2023 od Pavel Zaněk

Odhadovaná doba čtení: 9 minut

Jak vytvořit továrnu pro modely s balíčkem Astrotomic/laravel-translatable pro překlady

Obsah článku

Tento článek Vás provede procesem vytváření továrny pro modely v Laravelu s použitím balíčku Astrotomic/laravel-translatable pro překlady. Článek je určen pro všechny, kteří se chtějí dozvědět více o tom, jak efektivně využívat továrny v Laravelu a jak je kombinovat s balíčkem pro překlady. Nezabývám se zde podrobným popisem balíčku Astrotomic/laravel-translatable, ale zaměřím se na to, jak ho využít při vytváření továren.

Co je továrna v Laravelu a proč ji používat

Továrna v Laravelu je nástroj, který usnadňuje generování velkého množství testovacích dat pro naše databázové tabulky. Továrny jsou nezbytné pro automatizované testování, kde potřebujeme vytvářet různé scénáře pro naše testy.

Použití továren v Laravelu přináší několik výhod. Jednou z nich je efektivita - místo manuálního vytváření jednotlivých záznamů v databázi můžeme využít továrnu, která za nás vygeneruje požadované množství dat. Další výhodou je flexibilita. Továrny nám umožňují definovat různé stavy našich modelů, což nám umožňuje snadno vytvářet různé databázové scénáře pro naše testy.

V následujících částech se podíváme na to, jak vytvořit základní továrnu v Laravelu a jak ji upravit pro použití s balíčkem Astrotomic/laravel-translatable pro překlady.

Základy vytváření továrny v Laravelu

Vytváření továrny v Laravelu je jednoduchý proces, který vám umožní rychle generovat testovací data pro vaše databázové tabulky. Zde je návod, jak vytvořit základní továrnu v Laravelu.

Prvním krokem je vytvoření továrny pomocí příkazu Artisan. Otevřete terminál a zadejte následující příkaz:

php artisan make:factory ExampleModelFactory --model=ExampleModel

Tímto příkazem vytvoříte novou továrnu s názvem ExampleModelFactory pro model ExampleModel. Laravel automaticky vytvoří soubor továrny v adresáři database/factories.

Otevřete nově vytvořený soubor továrny a uvidíte metodu definition(). Tato metoda je místo, kde definujete, jak by měly být generovány jednotlivé atributy vašeho modelu.

...
public function definition()
{
    return [
        'attribut_name' => $this->faker->word,
        // other attributes...
    ];
}
...

V metodě definition() využíváme tzv. Faker knihovnu, která nám umožňuje generovat různé typy náhodných dat, jako jsou slova, věty, čísla a jiná data.

Nyní, když máte vytvořenou továrnu, můžete ji použít k vytvoření dat pro vaše testy. To můžete udělat například takto:

$user = UserFactory::new()->create();

Tímto způsobem vytvoříte nový záznam v databázi s daty generovanými vaší továrnou. Továrny v Laravelu jsou mocným nástrojem, který vám umožní snadno a efektivně generovat testovací data pro vaše aplikace.

Jak používat balíček Astrotomic/laravel-translatable pro překlady

Balíček Astrotomic/laravel-translatable je nástroj, který umožňuje snadné překlady vašich modelů v Laravelu. Tento balíček je ideální pro projekty, které vyžadují vícejazyčnou podporu, a umožňuje vám ukládat překlady vašich modelů přímo v databázi.

Abychom mohli balíček používat, musíme ho nejprve nainstalovat. To lze provést pomocí následujícího příkazu:

composer require astrotomic/laravel-translatable

Po instalaci balíčku musíme v našem modelu, který chceme překládat, použít trait Translatable. Trait přidává metody, které nám umožňují snadno pracovat s překlady.

...
use Astrotomic\Translatable\Translatable;

class Post extends Model
{
    use Translatable;

    public $translatedAttributes = ['title', 'body'];

    ...
}

V tomto příkladu jsme v modelu Post použili trait Translatable a definujeme, že atributy title a body budou překládány. Kromě trait můžeme také přidat contract:

...
use Astrotomic\Translatable\Contracts\Translatable as TranslatableContract;
use Astrotomic\Translatable\Translatable;

class Post extends Model implements TranslatableContract
{
    use Translatable;

    public $translatedAttributes = ['title', 'body'];

    ...
}

Balíček Astrotomic/laravel-translatable nám pak umožňuje snadno přistupovat k překladům a pracovat s nimi. Například takto:

$post = Post::first();
echo $post->translate('en')->title;  // this will print the English title of the post

Balíček Astrotomic/laravel-translatable je mocný nástroj pro práci s překlady v Laravelu. V následující části se podíváme na to, jak ho můžeme využít při vytváření továren.

Vytváření továrny pro modely s balíčkem Astrotomic/laravel-translatable

Nyní, když máme základní představu o tom, jak funguje balíček Astrotomic/laravel-translatable, můžeme se podívat na to, jak vytvořit továrnu pro modely, které tento balíček využívají.

Představme si, že máme model Post, který používá balíček Astrotomic/laravel-translatable pro překlady atributů title a body. Jak bychom pro tento model vytvořili továrnu?

První krok je stejný, jako jsme si ukázali v předchozí části - vytvoříme továrnu pomocí příkazu Artisan:

php artisan make:factory PostFactory --model=Post

Následně otevřeme soubor továrny a upravíme metodu definition() tak, aby generovala překlady pro naše atributy. To můžeme udělat například takto:

...
public function definition()
{
    $locales = ['en', 'cs'];
    $translations = collect($locales)->mapWithKeys(function($locale) {
        return [
            $locale => [
                'title' => $this->faker->words(3, true),
                'body' => $this->faker->realText(500),
                ...
            ]
        ];
    })->toArray();

    return array_merge($translations, [
        'type' => PostType::POST,  // non-translatable attribute
    ]);
}
...

V tomto příkladu generujeme překlady pro angličtinu (en) a češtinu (cs) pomocí Faker knihovny. Můžeme přidat tolik jazyků, kolik potřebujeme.

Nyní, když máme vytvořenou továrnu, můžeme ji použít k vytvoření dat pro naše testy stejným způsobem, jak jsme si ukázali v předchozí části. Tímto způsobem můžeme snadno vytvářet továrny pro modely, které používají balíček Astrotomic/laravel-translatable pro překlady.

Závěr

V tomto článku jsme se podrobně seznámili s procesem vytváření továrny pro modely v Laravelu s použitím balíčku Astrotomic/laravel-translatable pro překlady. Prošli jsme si základy vytváření továrny, seznámili jsme se s balíčkem Astrotomic/laravel-translatable a nakonec jsme si ukázali, jak vytvořit továrnu pro modely, které tento balíček používají.

Doufáme, že vám tento průvodce pomohl pochopit, jak efektivně využívat továrny v Laravelu a jak je kombinovat s balíčkem pro překlady. Laravel je mocný framework, který nabízí mnoho nástrojů a funkcí, které usnadňují vývoj webových aplikací. Továrny a balíček pro překlady jsou jen malou částí toho, co Laravel nabízí.

Pokud chcete prohloubit své znalosti Laravelu a jeho funkcí, doporučuji se podívat na další zdroje a tutoriály/návody, které jsou k dispozici online. Také se nebojte experimentovat a zkoušet nové věci - to je nejlepší způsob, jak se naučit a zlepšit své dovednosti. Přeji Vám hodně úspěchů a radosti při vývoji s frameworkem Laravel!

Sdílet:
5 / 5
Celkem hlasů: 7
Zatím jste nehodnotili.
Pavel Zaněk

Full-stack programátor & SEO konzultant

Pavel Zaněk je zkušený full-stack vývojář s odborností v SEO a programování v Laravelu. Jeho dovednosti zahrnují optimalizaci webových stránek, implementaci efektivních strategií pro zvýšení návštěvnosti a zlepšení pozic ve vyhledávačích. Pavel je expert na Laravel a jeho související technologie, včetně Livewire, Vue.js, MariaDB, Redis, TailwindCSS/Bootstrap a mnoho dalšího. Kromě svých programovacích dovedností má také silné zázemí v řízení VPS, což mu umožňuje zvládnout složité výzvy na straně serveru. Pavel je vysoce motivovaný a oddaný profesionál, který je zavázán k dodávání výjimečných výsledků. Jeho cílem je pomáhat klientům dosáhnout úspěchu v online prostoru a dosáhnout svých cílů s pomocí nejlepších webových technologií a strategií pro optimalizaci pro vyhledávače.

Doporučené články

Jak vytvořit RSS feed ve frameworku Laravel

Publikováno 10.08.2023 od Pavel Zaněk

Odhadovaná doba čtení: 16 minut

laravel

Průvodce vytvářením RSS feedu ve frameworku Laravel bez externích balíčků. Od základních principů až po pokročilé techniky. Ideální pro vývojáře hledající efektivní a bezpečné řešení.

Pokračovat ve čtení

Tato stránka používá cookies na vylepšení vašeho uživatelského zážitku. - Zásady Cookies