Zpět na kurz

Lekce 5: Práce s daty a užitečné balíčky

Vítejte v páté lekci kurzu. Dnes se zaměříme na pokročilejší techniky, které výrazně zefektivní vaši práci. Ukážeme si, jak spravovat uživatelské role a oprávnění, a jak exportovat data do různých formátů pomocí oblíbených balíčků komunity Laravelu.

Obsah lekce


Spatie/laravel-permission pro role a oprávnění

Správa uživatelských rolí a oprávnění je v mnoha aplikacích klíčová. Balíček spatie/laravel-permission je pro tento účel standardem a výrazně usnadňuje práci.

Instalace balíčku:

composer require "spatie/laravel-permission"

Vytvoření role „Admin“ a „Customer“:

use Spatie\Permission\Models\Role;

Role::create(['name' => 'Admin']);
Role::create(['name' => 'Customer']);

Přiřazení role uživateli:

// Předpokládáme, že máte objekt uživatele
$user->assignRole('Admin');

Použití middleware pro kontrolu role v routě:

// routes/web.php
Route::middleware(['role:Admin'])->group(function () {
    Route::get('/admin/dashboard', [AdminController::class, 'index']);
});

Export produktů do XML feedu s arraz/laravel-xml

Export dat do formátu XML se často používá pro datové feedy, například pro srovnávače cen. Balíček arraz/laravel-xml to usnadňuje.

Instalace balíčku:

composer require arraz/laravel-xml

Export produktů do XML:

use Arr\Xml\Response;
use App\Models\Product;

Route::get('/produkty/xml', function () {
    $products = Product::all();

    $xml = new Response();
    $xml->setRoot('products');
    $xml->setItemsName('product');
    $xml->addItemAttributes(['id' => 'id', 'name' => 'name']);
    $xml->addItems($products);

    return $xml->asXml();
});

Export produktů do CSV a Excelu s maatwebsite/excel

Pokud potřebujete exportovat data do tabulkového procesoru, je balíček maatwebsite/excel ideální volbou.

Instalace balíčku:

composer require maatwebsite/excel

Vytvoření exportovací třídy:

php artisan make:export ProductsExport --model=Product

Použití v controlleru:

use App\Exports\ProductsExport;
use Maatwebsite\Excel\Facades\Excel;

public function export() 
{
    return Excel::download(new ProductsExport, 'produkty.xlsx');
}
  1. Export do CSV je podobný, jen se změní koncovka souboru.

Spatie/laravel-translatable – překlady názvů produktů

Pro vytváření vícejazyčných aplikací, kde chcete mít překlady přímo v databázi, je balíček spatie/laravel-translatable skvělá volba.

Instalace balíčku:

composer require spatie/laravel-translatable

Přidání sloupce do migrace:

Schema::table('products', function (Blueprint $table) {
    $table->json('name');
});

V modelu Product definujte, které atributy jsou přeložitelné:

use Spatie\Translatable\HasTranslations;

class Product extends Model
{
    use HasTranslations;

    public $translatable = ['name', 'description'];
}

Použití:

$product->setTranslation('name', 'cs', 'Káva z Brazílie');
$product->setTranslation('name', 'en', 'Brazilian coffee');

Shrnutí

Žák po této lekci umí pracovat s rolemi a oprávněními, což je nezbytné pro zabezpečené aplikace. Dále se naučil, jak exportovat data do různých formátů jako XML, CSV a Excel, a jak efektivně pracovat s vícejazyčným obsahem přímo v databázi. Tyto dovednosti mu umožní tvořit robustnější a komplexnější aplikace. 🎉

David Kojecký

David Kojecký

Programátor ve společnosti Codefit a vývojář pro Mobilní lékárna CZ

´