2024. november 11., hétfő

13 B - Routing – útvonal kezelés

 A Laravel routing rendszere egy olyan alapvető komponens, amely a beérkező kéréseket a megfelelő erőforrásokhoz irányítja, hogy a felhasználó mindig a kívánt tartalmat lássa.

A router alapvető szerepe az, hogy a weboldal különböző URL-jeire beérkező kéréseket a megfelelő vezérlőkhöz (Controllers) irányítsa. Például, ha a weboldaladon van egy /contact oldal, a routernek meg kell határoznia, hogy melyik vezérlő kezelje a hozzá tartozó kéréseket. Ez azt jelenti, hogy minden URL (route) mögött egy meghatározott logika vagy nézet (view) található, amit a router közvetít.

Laravelben a routeokat a routes könyvtárban található fájlokban hozhatod létre, és ezeket itt irányíthatod különböző vezérlőkhöz vagy nézetekhez. Az alapértelmezett fájl, amelyet a webes útvonalak kezelésére használunk, a web.php. Itt adhatod meg azokat az útvonalakat, amelyek a böngészőből érhetők el.

Nézzünk először néhány nagyon egyszerű beállítást ami segít megérteni az útvonalak megértésést. Ami a welcome nézetre vezet, ez egy  alapértelmezett útvonal, ún. default route, ami rossz példa, mert a route-ba normál esetben sosem írunk functiont, mert ezt a route-ot a webszerverünk el casheli, és ez nem fog tudni funcitont cash-elni, csak szöveget, úgyhogy nem így fogjuk ezt csinálni, a routokat a controllerek fogják kiszolgálni, de vizsgálódásra egyenlőre megfelel.

Másoljuk le és kicsit módosítsunk:

Route::get('/Home', function () {

    return "<h1>Szia Uram!<h1>";

});

itt a böngészőbe már a crud.test/Home –ot kell beírni, hogy megjelenjen a szöveg.

Ez nem túl praktikus megoldás, ezért használjuk a view-t.  A views-t a resources mappán belül találjuk meg. A welcome.blade.php fájlon belül találjuk a welcome page tartalmát.

Amit a 28-ik sor után látunk @ és {} ez a blade szintaxis. A Blade a Laravel által biztosított sablonozó motor. Más népszerű PHP sablonozó motorokkal ellentétben a Blade nem korlátozza a sima PHP kód használatát a nézetekben.

Hozzunk létre egy új fájlt : home.blade.php

Módosítsuk az oldalt, írjunk bele egy üdvözlő szöveget és adjuk meg hozzá a helyes routot

Route::get('/Home', function () {

    return view('home');

});

a böngészőben a /Home hivatkozással tudjuk megnyitni

A routes view-ban megadhatunk változót is második argumentumként:

Route::get('/Home', function () {

    return view('home', ['name' => "Zita"]);

});

Majd ezt követően a home.blade.php-ben pedig írassuk ki: <h1>Szia <?php echo $name ?></h1>

A változók nevét megadhatjuk göndör zárójelekben is, ugyanúgy fog működni:

<h1>Szia {{ $name }}</h1>

Először is hozzunk létre egy új controllert a következő paranccsal:

php artisan make:controller ContactController

Ez a parancs létrehoz egy új vezérlőt ContactController.php néven az app/Http/Controllers mappában.

Miután létrehoztad a vezérlőt, hozzáadhatod a szükséges metódusokat, például egy show metódust a kapcsolat oldal megjelenítésére:

public function show() { return view('contact'); }

Hozzuk létre a contact.blade.php fájlt a következő tartalommal:

<form action="/contact" method="POST">

    @csrf

    <label for="name">Név:</label>

    <input type="text" name="name" id="name" required>

    <label for="email">Email:</label>

    <input type="email" name="email" id="email" required>

    <label for="message">Üzenet:</label>

    <textarea name="message" id="message" required></textarea>

    <button type="submit">Küldés</button>

</form>

A @csrf egy Blade direktíva Laravelben, amely az űrlapok biztonságossá tételére szolgál. A CSRF (Cross-Site Request Forgery) védelem biztosítása érdekében Laravel minden űrlapbeküldést egyedi tokennel lát el. Ez megakadályozza, hogy más weboldalak rosszindulatú kéréseket küldjenek a szervernek a felhasználó nevében.

A laravel automatikusan létrehoz egy token-t minden egyes felhasználói munkamenethez. Amikor egy űrlapot küldünk be, a Laravel elvárja, hogy ez a token szerepeljen az űrlapban, és ellenőrzi, hogy a token megegyezik-e a szerver által elvárttal.

A @csrf Blade direktíva ezt a tokent automatikusan beilleszti az űrlapba egy rejtett mezőben: <input type="hidden" name="_token" value="a_csrf_token_hash">

Ezután a web.php fájlban hozzá adjuk a szükséges class-t:

use App\Http\Controllers\ContactController;

majd az útvonalat: (de ha elég jó extensionokat letelepítettél, akkor elég az útvonal, a szükséges osztályt be tudod importálni egy kattintással)

Route::get('/contact', [ContactController::class, 'show']);

Ez a példa azt mutatja, hogyan irányítja a Laravel a /contact URL-re érkező GET kéréseket a ContactController vezérlő show metódusához.

A laravel controllerei az app mappán belül, a http mappán belül a Controllers mappán belül található controllers.php.

Tehát szintaxis:

php artisan [utasítás] [--paraméterek]

Objektumok létrehozása:

php artisan make:[objektum típus] [--paraméterek]

artisan make:controller - -help a helpereket mutatja meg

php artisan make:controller [kontroller_fájl_neve]

Feladat készíts a welcome.blade.php fájlhoz controller-t, és javítsd át hozzá az útvonalat!

A Laravel támogatja a dinamikus routeokat is, ahol változókat adhatunk át az útvonalban. Például, ha egy konkrét felhasználói profilt szeretnél megjeleníteni:

Route::get('/profile/{id}', [ProfileController::class, 'show']);

Ebben az esetben a {id} egy dinamikus paraméter, amelyet a felhasználó azonosítójaként használhatsz. A Laravel automatikusan kinyeri az URL-ből az értéket, és átadja a show metódusnak.

A Laravel routing rendszere lehetővé teszi a middleware-ek beállítását, amelyek egyfajta szűrőként működnek, mielőtt a kérést továbbítaná a vezérlőhöz. A middleware-ek segítségével például ellenőrizheted, hogy a felhasználó be van-e jelentkezve, vagy hogy van-e megfelelő jogosultsága az adott oldal eléréséhez.

Route::get('/dashboard', [DashboardController::class, 'index'])->middleware('auth');

ebben az esetben a dashboard oldal eléréséhez a auth middleware biztosítja, hogy csak a bejelentkezett felhasználók férjenek hozzá a dashboard-hoz.

A Laravel támogatja az összes alapvető HTTP metódust, beleértve a GET, POST, PUT, DELETE és más módszereket. Ezek használatával szabályozhatod, hogy egy-egy route milyen típusú kéréseket fogadjon.

  • GET: Az adatok lekérésére szolgál. Pl. egy bejelentkezési oldal megjelenítéséhez.
  • POST: Adatok beküldésére használatos. Pl. egy regisztrációs űrlap adatainak mentésére.
  • PUT/PATCH: Adatok frissítésére.
  • DELETE: Adatok törlésére.

Route::get('/posts', [PostController::class, 'index']); // Listázás

Route::post('/posts', [PostController::class, 'store']); // Létrehozás

Route::put('/posts/{id}', [PostController::class, 'update']); // Frissítés

Route::delete('/posts/{id}', [PostController::class, 'destroy']); // Törlés

Kezdetben elegendő a web.php fájlra koncentrálni, amely a böngészőből elérhető, általános webes útvonalakat kezeli. Ebben a fájlban minden útvonal közvetlenül a felhasználók által hozzáférhető URL-ekre vonatkozik, és tartalmazhat statikus oldalakat, dinamikus tartalmakat, vagy vezérlőkhöz rendelt logikát.

Laravel routing rendszere rugalmas és könnyen használható, így segít egyszerűen felépíteni egy komplex, skálázható webes alkalmazást. A web.php segítségével az alkalmazás struktúráját alapozhatod meg, mielőtt továbblépsz az összetettebb route-konfigurációkra és API-útvonalakra.

Nincsenek megjegyzések:

Megjegyzés küldése

<<< szintaxis

 A <<< szintaxist a PHP-ban "heredoc" vagy "nowdoc" szintaxisnak nevezzük. Ez nem pontosan olyan, mint a Jav...