Hogyan építsük fel az alapértelmezett függvényeket? (Megtekintés, Létrehozás, Szerkesztés, Törlés)
Last active
October 6, 2022 11:00
-
-
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)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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