Laravel kezdőknek - 4. rész - Controller



🎯 Cél:

Megérteni, miért érdemes külön fájlban kezelni a logikát, és hogyan hozunk létre controllert, ami a route-okhoz kapcsolódik.

🧩 1. Mi az a Controller?

A Controller (vezérlő) az az elem, ami:

fogadja a kérést a route-tól,

feldolgozza az adatot, és

visszaadja a választ (pl. szöveget vagy view-t).

💬 Másképp:
A route csak „ajtó”, a controller az, aki „válaszol”.

🧱 2. Controller létrehozása

A Laravelben az artisan parancs segít új controller létrehozásában:

php artisan make:controller HomeController


Ez létrehoz egy fájlt itt:

app/Http/Controllers/HomeController.php

🧠 3. A létrehozott controller tartalma

Ha megnyitod a fájlt, ezt látod:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{
    //
}


Ez az alap sablon.
Most tegyünk bele egy egyszerű metódust:

public function index()
{
    return "Hello, ez a Controllerből jön!";
}

🧭 4. Route összekapcsolása a controllerrel

Nyisd meg a routes/web.php fájlt, és cseréld le a korábbi route-ot erre:

use App\Http\Controllers\HomeController;
use Illuminate\Support\Facades\Route;

Route::get('/', [HomeController::class, 'index']);


🧩 Itt azt mondod a Laravelnek:

Ha a felhasználó a / (főoldal) útvonalat hívja meg,
akkor futtasd a HomeController → index() metódust.

🧪 5. Próbáld ki

Futtasd:

php artisan serve


Nyisd meg:
👉 http://localhost:8000

Kimenet:

Hello, ez a Controllerből jön!


🎉 Működik!
Most már nem a web.php fájlban van a logika, hanem külön fájlban — tisztább, rendezettebb, skálázhatóbb.

🧩 6. További metódusok a controllerben

Egy controllerben több metódus is lehet.
Például:

public function udvozlet($nev)
{
    return "Szia, $nev!";
}


Majd a route-ban:

Route::get('/udvozlet/{nev}', [HomeController::class, 'udvozlet']);


Most:
👉 http://localhost:8000/udvozlet/Zsömle

Eredmény:

Szia, Zsömle!

🧩 7. Paraméterek és logika
public function osszead($a, $b)
{
    $eredmeny = $a + $b;
    return "A két szám összege: $eredmeny";
}


Route:

Route::get('/osszead/{a}/{b}', [HomeController::class, 'osszead']);


👉 http://localhost:8000/osszead/5/7