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']);
Route::post('/posts', [PostController::class, 'store']);
Route::put('/posts/{id}', [PostController::class, 'update']);
Route::delete('/posts/{id}', [PostController::class, 'destroy']);
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.