Skip to content

Instantly share code, notes, and snippets.

@rozsazoltan
Last active October 6, 2022 11:00
Show Gist options
  • Save rozsazoltan/4d7ed35d3323814f616d97838e100be2 to your computer and use it in GitHub Desktop.
Save rozsazoltan/4d7ed35d3323814f616d97838e100be2 to your computer and use it in GitHub Desktop.
Laravel - BREAD controller - példa - Hogyan építsük fel az alapértelmezett függvényeket? (Megtekintés, Létrehozás, Szerkesztés, Törlés)

rozsazoltan - gist License

Laravel: BREAD controller példa

Hogyan építsük fel az alapértelmezett függvényeket? (Megtekintés, Létrehozás, Szerkesztés, Törlés)

<?php
/**
** Mi kell a sikerhez?
*
* - 1 db model Example (általad szükséges) néven
* |-> Ehhez egy examples táblára az adatbázisodban (eltérő név esetén a model-ben megkell határozni a táblád nevét: protected $table = "nemexample")
* - Útvonalra a routes/web.php-ban: (röviden) Route::resource('example', ExampleController::class);
* |-> így lesz egy ./example cím ami az ExampleController::index -re hivatkozik
* |-> így lesz egy ./example/create cím ami az ExampleController::create -ra hivatkozik
* |-> így lesz egy ./example/store cím ami az ExampleController::store -ra hivatkozik
* |-> így lesz egy ./example/edit cím ami az ExampleController::edit -re hivatkozik
* |-> így lesz egy ./example/update cím ami az ExampleController::update -re hivatkozik
* |-> így lesz egy ./example/destory cím ami az ExampleController::destory -ra hivatkozik
* - Bladek-re a resources/views/example mappában:
* |-> index.blade.php - táblázat lesz benne ami majd kap egy $examples változót, melyet @foreach paranccsal lehet rekordonként kiírni
* továbbá itt lesz minden rekord mellett 2 gomb: "szerkesztés" és "törlés", valamint lesz a táblázat felett egy "új rekord gomb"
* |-> create.blade.php - formot fog tartalmazni,
* amely majd az inputokat submit gomb lenyomásával a POST metódusú ./example/store linkre továbbítja
* |-> edit.blade.php - formot fog tartalmazni amelyben lesz előre kitöltve adat,
* amely majd az inputokat submit gomb lenyomásával a POST metódusú ./example/update linkre továbbítja
*/
namespace App\Http\Controllers;
use App\Models\Example;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Request;
class ExampleController extends Controller
{
/**
** A táblánkban levő rekordok megtekintése táblázatban
* - itt lekérdezzük a rekordokat, majd továbbadjuk őket a megjelenítő blade-nek
*/
public function index()
{
// Összes rekord lekérdezése
$records = Example::all();
// "example.index" blade megjelenítése (útvonal: főmappa/resources/views/example/index.blade.php)
// - a blade-nek átadjuk a rekordokat, hogy tudjon mit megjeleníteni:
// "examples" néven kapja meg a $records változót,
// így a "főmappa/resources/views/example/index.blade.php" -n belül $examples változóként fogjuk megkapni a rekordokat
return view("example.index")->with("examples", $records);
}
/**
** Új rekord hozzáadásához megjelenítünk egy formot
*/
public function create()
{
// "example.create" blade megjelenítése (útvonal: főmappa/resources/views/example/create.blade.php)
// - ide egy formot kell elhelyezni, majd a form az itteni store() függvényt fogja meghívni POST kérelemmel
return view("example.create");
}
/**
** Új rekord rögzítése
*/
public function store(Example $request)
{
// Új rekord rögzítése az Example model-be (create rögtön az adatbázisba ment)
// $request változó az útvonalak meghívásakor jön létre, és az útvonalnak átadott adatokat továbbítja:
// - például fejléc, url, vagy FORM adat
// - a form adatok kinyerése vagy egyesével megy $request->inputNeve vagy $request->all() -al egy tömbbe kapjuk meg az összes inputot
//
// Hosszasan taglalva:
// Example::create([
// "name" => $request->name,
// "age" => $request->age,
// ...
// ]);
//
// Vagy röviden:
Example::create($request->all());
// Átirányítjuk a felhasználót a táblázatokhoz
// Itt nem a blade nevére gondolunk, hanem az útvonalra ami ironikus módon ugyanazon elnevezéssel van (így egybeköthető a kettő működése)
return Redirect::route('example.index');
}
/**
** Új rekord hozzáadásához megjelenítünk egy formot
*/
public function edit($id)
{
// Megkeressük a kért ID-jú rekordot a model táblájából
$record = Example::find($id);
// A kapott rekordot továbbítjuk egy blade-re amin egy form található (és a form input mezőibe előre beírjuk az átadott adatokat)
return view("example.edit")->with("example", $record);
}
/**
** Meglévő rekord rögzítése
* - ugyanaz mint a store() -> csak itt nem egy új üres rekordbe rögzítjük az adatokat,
* hanem megkeresünk egy meglévőt és átírjuk annak az adatait az újakra
*/
public function update(Request $request, $id)
{
// Módosítandó rekord kikeresése
$record = Example::find($id);
// Meglévő rekord rögzítése az Example model-be (update rögtön az adatbázisba ment)
// $request változó az útvonalak meghívásakor jön létre, és az útvonalnak átadott adatokat továbbítja:
// - például fejléc, url, vagy FORM adat
// - a form adatok kinyerése vagy egyesével megy $request->inputNeve vagy $request->all() -al egy tömbbe kapjuk meg az összes inputot
//
// Hosszasan taglalva:
// $record->update([
// "name" => $request->name,
// "age" => $request->age,
// ...
// ]);
//
// Vagy röviden:
$record->update($request->all());
// Átirányítjuk a felhasználót a táblázatokhoz
// Itt nem a blade nevére gondolunk, hanem az útvonalra ami ironikus módon ugyanazon elnevezéssel van (így egybeköthető a kettő működése)
return Redirect::route('example.index');
}
public function destroy($id)
{
// Törölni kívánt rekord kikeresése
$record = Example::find($id);
// Rekord törlése
$record->delete();
// Átirányítjuk a felhasználót a táblázatokhoz
// Itt nem a blade nevére gondolunk, hanem az útvonalra ami ironikus módon ugyanazon elnevezéssel van (így egybeköthető a kettő működése)
return Redirect::route('example.index');
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment