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í
- Export dat do XML feedu
- Export dat do CSV a Excelu
- Spatie/laravel-translatable – překlady názvů
- Shrnutí
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');
}
- 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. 🎉
´