oktatas:web:back-end_framework:laravel:laravel_bevezetes
Különbségek
A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
Előző változat mindkét oldalonElőző változatKövetkező változat | Előző változat | ||
oktatas:web:back-end_framework:laravel:laravel_bevezetes [2024/03/06 20:27] – [A laravel parancs] admin | oktatas:web:back-end_framework:laravel:laravel_bevezetes [2025/08/01 11:13] (aktuális) – eltávolítva admin | ||
---|---|---|---|
Sor 1: | Sor 1: | ||
- | [[oktatas: | ||
- | ====== Laravel bevezetés ====== | ||
- | |||
- | * **Szerző: | ||
- | * Copyright (c) Sallai András, 2021, 2022, 2023 | ||
- | * Licenc: [[https:// | ||
- | * Web: https:// | ||
- | |||
- | ===== A Laravel ===== | ||
- | |||
- | A Laravel egy nyílt forráskódú PHP keretrendszer, | ||
- | használ. | ||
- | |||
- | A Laravel webhelye: | ||
- | * https:// | ||
- | |||
- | A Laravel alkalmazást mindig a kiszolgált webtárhely gyökérkönyvtárából induljon, | ||
- | másként érzékeny fájlok válhatnak elérhetővé. | ||
- | |||
- | |||
- | A Laravel weboldalán a 8.x dokumentációtól olvashatjuk: | ||
- | |||
- | Lehet benne REST API-t készíteni és ugyanabban a projektben | ||
- | lehet REST API klienst is készíteni. Vagyis a Full Stack alatt, | ||
- | RESTful alkalmazást értünk. A REST API és a kliens között HTTP kommunikáció van. Ettől függetlenül alkalmas " | ||
- | |||
- | Ez a leírás monolit összeállításával kezdődik. | ||
- | |||
- | |||
- | ===== VSCode beállítás ===== | ||
- | |||
- | Bővítmény: | ||
- | * Laravel Snippets | ||
- | |||
- | |||
- | ===== Telepítés ===== | ||
- | |||
- | ==== Windowson ==== | ||
- | |||
- | Szükséges szoftverek: | ||
- | * XAMPP - vagy más WAMP szerver - ebből szüksége: PHP, MariaDB | ||
- | * Composer | ||
- | * Visual Studo Code, Atom vagy más kódszerkesztő | ||
- | |||
- | Lépések: | ||
- | * Telepítsük az XAMPP-t | ||
- | * Tegyük útvonalba a php.exe fájl útvonalát | ||
- | * Telepítsük a Composer-t | ||
- | |||
- | A sorrendet tartsuk be. Ha nincs fent az XAMPP és előbb telepítjük a Composer-t, akkor az is felfog tenni egy PHP-t. | ||
- | ==== Linuxon ==== | ||
- | |||
- | Szükséges szoftverek: | ||
- | * PHP | ||
- | * Composer | ||
- | * Visual Studo Code, Atom vagy más kódszerkesztő | ||
- | |||
- | |||
- | |||
- | PHP és PHP modulok telepítése: | ||
- | apt install php phpunit php-bcmath php-mbstring php-xml | ||
- | |||
- | A legújabb composer: | ||
- | |||
- | curl https:// | ||
- | mv composer.phar / | ||
- | |||
- | |||
- | vagy a Linux terjesztés csomagtárolójából: | ||
- | apt install composer | ||
- | |||
- | |||
- | ==== Ellenőrzés ==== | ||
- | |||
- | php --version | ||
- | composer --version | ||
- | |||
- | PHP modulok ellenőrzése: | ||
- | php -m | ||
- | php -i | ||
- | |||
- | |||
- | Visual Studio Code ellenőrzése: | ||
- | code --version | ||
- | |||
- | |||
- | Atom ellenőrzése: | ||
- | atom --version | ||
- | |||
- | ==== Szükséges PHP beállítás ==== | ||
- | |||
- | Szerkesszük a php.ini fájlt és keressük meg a következő sort: | ||
- | |||
- | ; | ||
- | |||
- | Töröljük a ";" | ||
- | extension=fileinfo | ||
- | |||
- | A 8.2 PHP-ban ez alapértelmezetten megjegyzésben van. | ||
- | |||
- | A composer telepítése során felkerült PHP Windowson a következő helyre telepszik: | ||
- | c: | ||
- | |||
- | Itt keressük meg a php.ini fájlt. | ||
- | |||
- | |||
- | ===== Projekt létrehozása ===== | ||
- | |||
- | Laravel projekt létrehozható a Laravel installer laravel paranccsával, | ||
- | vagy a composer paranccsal. Itt most a composer parancsot használjuk. | ||
- | |||
- | |||
- | Composer segítségével egy Laravel projekt létrehozása: | ||
- | composer create-project laravel/ | ||
- | |||
- | A composer használatáról bővebb információ: | ||
- | * https:// | ||
- | |||
- | |||
- | ==== Előző verziók ==== | ||
- | Ha nem áll rendelkezésre PHP8, akkor Laravel 8 verziója töltődik le. | ||
- | De magunk is kérhetünk előző verziót: | ||
- | |||
- | composer create-project laravel/ | ||
- | |||
- | ==== dist vagy source ==== | ||
- | |||
- | A Laravel projekt létrehozásakor szokás használni a ''< | ||
- | kapcsolót. A kapcsoló megmondja, hogy a Laravel és függőségeit | ||
- | a terjesztési archívumból szeretnénk letölteni, a verzióval követett, | ||
- | korábbi verziók nélkül: | ||
- | < | ||
- | --prefer-dist | ||
- | </ | ||
- | |||
- | |||
- | composer create-project laravel/ | ||
- | | ||
- | Ennek használata gyorsabb letöltést eredményez. A < | ||
- | az alapértelmezés. | ||
- | |||
- | Ezzel szemben a ''< | ||
- | verziókkal egyben tölti le, mint a git clone, parancs. | ||
- | |||
- | ==== Aktuális könyvtár ==== | ||
- | |||
- | A (.) pont segítségével, | ||
- | könyvtárban jöjjön létre a Laravel projekt. Ha semmilyen | ||
- | paramétert nem adunk meg, akkor akkor " | ||
- | jön létre egy projekt könyvtár. | ||
- | |||
- | composer create-project laravel/ | ||
- | |||
- | ===== A laravel parancs ===== | ||
- | |||
- | Felhaszálóként kell teleípteni: | ||
- | composer global require laravel/ | ||
- | |||
- | |||
- | Linuxon a következő helyre telepszik: | ||
- | ~/ | ||
- | |||
- | Ezt az útvonalat kell PATH környezeti változóban beállítani. | ||
- | |||
- | ===== Artisan szerver ===== | ||
- | |||
- | A composer létrehoz egy projekt01 nevű könyvtárat. Lépjünk | ||
- | be a könyvtárba. A projekt könyvtár tartalmaz egy artisan nevű fájt, | ||
- | PHP függvényekkel, | ||
- | tudunk végrehajtani. Ügyeljünk arra, hogy artisan parancsot csak | ||
- | egy olyan könyvtárban adhatunk ki, ahol jelen van az artisan nevű | ||
- | fájl, vagyis a projekt gyökérkönyvtárában. | ||
- | |||
- | Az artsian fájl, valójában PHP függvényeket tartalmaz, amelyek | ||
- | segítik a Larvel keretrendszerrel való munkát. | ||
- | |||
- | Az Artisan parancsokhoz segítség: | ||
- | php artisan list | ||
- | és itt: | ||
- | * https:// | ||
- | |||
- | |||
- | Az artisan egy fejlesztői szervert is biztosít számunkra. | ||
- | |||
- | Lépjünk be a projekt könyvtárába, | ||
- | majd indítsuk el a fejlesztői webszervert: | ||
- | |||
- | cd projekt01 | ||
- | php artisan serve | ||
- | |||
- | A PHP fejlesztő szerver a 8000-s porton indul el, de megadhatunk más portot is: | ||
- | php artisan serve --port=8081 | ||
- | |||
- | Ha távolról is szeretnénk elérni, használjuk a < | ||
- | php artisan serve --host=0.0.0.0 --port=8080 | ||
- | |||
- | |||
- | ===== Könyvtárstruktúra ===== | ||
- | |||
- | A gyökér könyvtár tartalma: | ||
- | |||
- | * app - az alkalmazás alapvető kódjai | ||
- | * bootstrap - a keretrendszert indító fájlok | ||
- | * config - összes konfiguráció | ||
- | * database - adatbázishoz tartozó fájlok | ||
- | * public - az alkalmazás belépési pontja | ||
- | * resources - nézetek, le nem fordított CSS és JavaScript állományok | ||
- | * routes - útvonal-meghatározások helye | ||
- | * storage - naplók, Blade sablonok, a keretrendszer állományai | ||
- | * tests - automatizált tesztek helye | ||
- | * vendor - a composer függőségeit tartalmazza | ||
- | |||
- | |||
- | Az app könyvtár tartalma: | ||
- | * Broadcasting | ||
- | * csatornaosztályok helye | ||
- | * alapértelmezetten nem létezik | ||
- | * Console - egyedi kézzel írt parancsok (make: | ||
- | * Events | ||
- | * alapértelmezetten nem létezik | ||
- | * az event: | ||
- | * eseményosztályok helye | ||
- | * Exceptions - kivételkezelők helye | ||
- | * Http - vezérlők, köztes szoftverek és űrlapkérések helye | ||
- | * Jobs | ||
- | * alapértelmezés szerint nem létezik | ||
- | * make:job Artisan parancs hozza létre | ||
- | * sorba állítható feladatok helye | ||
- | * Listeners | ||
- | * alapértelmezés szerint nem létezik | ||
- | * event: | ||
- | * Eseményeket kezelő osztályok helye | ||
- | |||
- | * alapértelmezetten nem létezik | ||
- | * a make:mail parancs hozza létre | ||
- | * az alkalmazás által küldött e-mail osztályainak helye | ||
- | * Models - Eloquent ((Objektum-relációs leképező rendszer (ORM), amely megkönnyíti az | ||
- | adatbázissal való kapcsolatunkat. Minden tábla rendelkezik egy modellel, | ||
- | ami az adott táblához való hozzáférést segíti.)) modellosztályok helye | ||
- | * Notifications | ||
- | * alapértelmezetten nem létezik | ||
- | * make: | ||
- | * az alkalmazás által küldött értesítések helye | ||
- | * Policies | ||
- | * alapértelmezés szerint nem létezik | ||
- | * a make:policy Artisan parancs hozza létre | ||
- | * az alkalmazás engedélyezési házirendjének helye | ||
- | * Providers - szolgáltatások helye | ||
- | * Rules | ||
- | * alapértelmezés szerint nem létezik | ||
- | * a make:rule Artisan parancs hozza létre | ||
- | |||
- | Forrás: | ||
- | * https:// | ||
- | |||
- | |||
- | ===== Nézetek ===== | ||
- | |||
- | A nézetek a következő helyen találhatók: | ||
- | * resources/ | ||
- | |||
- | |||
- | Nézet úgy hozható létre, ha létrehozunk egy fájlt **.blade.php** kiterjesztéssel. | ||
- | |||
- | Az alapértelmezett welcom.blade.php helyett készítsünk egy home.blade.php | ||
- | fájlt, ami a webhely főoldala lesz. | ||
- | |||
- | |||
- | resources/ | ||
- | |||
- | Tartalma egy h1 elem legyen: | ||
- | <code html resources/ | ||
- | < | ||
- | </ | ||
- | |||
- | |||
- | A létrehozott nézetet be kell jegyeznünk az útválasztóba. | ||
- | Ezt a következő helyen tehetjük meg: | ||
- | * routes/ | ||
- | |||
- | A welcome helyére írjuk a home szót: | ||
- | |||
- | <code php> | ||
- | Route:: | ||
- | return view(' | ||
- | }); | ||
- | </ | ||
- | |||
- | Nézzük meg a weboldalt böngészőben: | ||
- | localhost: | ||
- | Ügyeljünk arra, hogy fusson az Artisan webszerver. Ha valamiért leállítottuk, | ||
- | php artisan serve | ||
- | |||
- | ===== Artisan parancsok ===== | ||
- | |||
- | Az Artisan parancsokat **'' | ||
- | majd megmondjuk mit szeretnénk. Ne felejtsük el, hogy a | ||
- | csak projekt gyökérkönyvtárában fognak működni. | ||
- | |||
- | Az Artisan parancsok listáját '' | ||
- | számunkra egy rövid leírással: | ||
- | php artisan list | ||
- | |||
- | |||
- | |||
- | Most nézzük meg útvonalak listáját egy Artisan paranccsal: | ||
- | php artisan route:list | ||
- | |||
- | A kimenet ehhez hasonló: | ||
- | < | ||
- | +--------+----------+----------+------+---------+------------+ | ||
- | | Domain | Method | ||
- | +--------+----------+----------+------+---------+------------+ | ||
- | | | GET|HEAD | / | | Closure | web | | ||
- | | | GET|HEAD | api/user | | Closure | api | | ||
- | | | | | | | auth: | ||
- | +--------+----------+----------+------+---------+------------+ | ||
- | </ | ||
- | |||
- | Van egy api/user útvonal is, amit a Laravel projektünk automatikusan tartalmaz. | ||
- | |||
- | ===== Névjegy ===== | ||
- | |||
- | Hozzunk létre egy névjegy oldalt (nézetet). Ehhez készítsünk a resources/ | ||
- | egy about.blade.php nevű fájlt: | ||
- | resources/ | ||
- | |||
- | Tartalma most két sor legyen: | ||
- | <code html resources/ | ||
- | < | ||
- | < | ||
- | </ | ||
- | |||
- | Készítsünk számára egy új útvonal-információt. Írjuk az | ||
- | új bejegyzést a fájl végére: | ||
- | <code php> | ||
- | ... | ||
- | Route:: | ||
- | return view(' | ||
- | }); | ||
- | </ | ||
- | |||
- | |||
- | Most így néz ki a routes/ | ||
- | <code php> | ||
- | <?php | ||
- | |||
- | use Illuminate\Support\Facades\Route; | ||
- | |||
- | /* | ||
- | |-------------------------------------------------------------------------- | ||
- | | Web Routes | ||
- | |-------------------------------------------------------------------------- | ||
- | | | ||
- | | Here is where you can register web routes for your application. These | ||
- | | routes are loaded by the RouteServiceProvider within a group which | ||
- | | contains the " | ||
- | | | ||
- | */ | ||
- | |||
- | Route:: | ||
- | return view(' | ||
- | }); | ||
- | |||
- | Route:: | ||
- | return view(' | ||
- | }); | ||
- | </ | ||
- | |||
- | Nézzük meg a böngészőben: | ||
- | localhost: | ||
- | |||
- | ===== Komponensek ===== | ||
- | |||
- | Nézzük meg a két weblapunk forráskódját. | ||
- | A blade.php állományok jelenleg nem generálnak szabályos weblapokat. | ||
- | Ezért, írjunk számukra fejrészt és lábrészt. | ||
- | Ezeket **komponensek** formájában hozzuk létre, Artisan paranccsal. | ||
- | |||
- | Hozzuk létre a Header nevű komponenst: | ||
- | |||
- | php artisan make: | ||
- | |||
- | Létrejön egy **components** könyvtár **resources/ | ||
- | Ezen belül létrejön egy **header.blade.php** fájl. | ||
- | |||
- | Írjuk bele a weblap fejrészét: | ||
- | |||
- | <code html header.blade.php> | ||
- | < | ||
- | <html lang=" | ||
- | < | ||
- | <meta charset=" | ||
- | < | ||
- | </ | ||
- | < | ||
- | |||
- | </ | ||
- | |||
- | Vegyük észre, hogy HTML oldal záró body és html tagét nem írtuk a fájlba. | ||
- | |||
- | |||
- | Hozzuk létre a lábrészt is: | ||
- | |||
- | php artisan make: | ||
- | |||
- | Létrejön a **footer.blade.php** fájl. Írjuk bele lábrészt: | ||
- | |||
- | <code html footer.blade.php> | ||
- | |||
- | </ | ||
- | </ | ||
- | </ | ||
- | |||
- | Most javítsuk a resources/ | ||
- | és az **about.blade.php** fájlokat: | ||
- | |||
- | |||
- | <code html resources/ | ||
- | < | ||
- | |||
- | < | ||
- | |||
- | < | ||
- | </ | ||
- | |||
- | |||
- | <code html resources/ | ||
- | < | ||
- | |||
- | < | ||
- | < | ||
- | |||
- | < | ||
- | </ | ||
- | |||
- | |||
- | |||
- | Az < | ||
- | Az < | ||
- | |||
- | <note important> | ||
- | |||
- | Az x-header és x-footer után kötelező a / karakter! | ||
- | |||
- | < | ||
- | |||
- | < | ||
- | |||
- | A szóköz elhagyható. | ||
- | |||
- | </ | ||
- | |||
- | Ügyeljünk arra, hogy legyen elindítva az Artisan szerver, majd nézzük meg a böngészőben: | ||
- | * localhost: | ||
- | * localhost: | ||
- | |||
- | Nézzük meg a weboldalak forráskódját is. | ||
- | |||
- | |||
- | Ötlet: Külön tehetjük a weblap head elemet és tartalmát, és külön a weboldal felső részt: | ||
- | * head.blade.php | ||
- | * header.blade.php | ||
- | * fotter.blade.php | ||
- | ===== A Blade sablon ===== | ||
- | |||
- | Szeretnék a Blade nézeteket sablonként (template) használni, | ||
- | vagyis értéket szeretnénk beírni bizonyos helyekre programból, | ||
- | futási időben. | ||
- | |||
- | Készítünk egy listát tartalmazó weblapot, amelyen | ||
- | szerepelhetnek a teendőink. Legyen a neve **list**. | ||
- | |||
- | A fájl tartalma: | ||
- | |||
- | <code html resources/ | ||
- | < | ||
- | |||
- | < | ||
- | < | ||
- | |||
- | <ul> | ||
- | < | ||
- | < | ||
- | < | ||
- | </ul> | ||
- | |||
- | < | ||
- | </ | ||
- | |||
- | |||
- | A x-header és x-footer elemek behelyettesítik a fejrészt és a lábrészt. | ||
- | A < | ||
- | |||
- | |||
- | |||
- | Ha elkészült a Blade sablon, jegyezzük be az útvonalak közzé: | ||
- | |||
- | <code php routes/ | ||
- | ... | ||
- | |||
- | Route:: | ||
- | return view(' | ||
- | }); | ||
- | </ | ||
- | |||
- | |||
- | |||
- | Az útválasztó **web.app** fájlban hozzuk létre egy asszociatív tömböt, | ||
- | ahol a kulcsok neve megegyezik a nézetben megadott változónevekkel: | ||
- | |||
- | <code php routes/ | ||
- | ... | ||
- | |||
- | Route:: | ||
- | $todos[' | ||
- | $todos[' | ||
- | $todos[' | ||
- | |||
- | return view(' | ||
- | }); | ||
- | </ | ||
- | |||
- | A Route:: | ||
- | létrehozunk egy tömböt, amiben a három tennivaló van. A névtelen függvény | ||
- | ez meghívja a view() függvényt, | ||
- | átadja a < | ||
- | |||
- | Most nézzük meg böngészőben: | ||
- | localhost: | ||
- | |||
- | Nézzük meg újra a beállított útvonalakat: | ||
- | php artisan route:list | ||
- | |||
- | |||
- | ===== Kontroller létrehozása ===== | ||
- | |||
- | Az adatokat nem az útválasztóban szokás létrehozni, | ||
- | egy kontroller kéri el valamilyen modelltől. De most, | ||
- | maradjunk csak a kontrollernél. | ||
- | |||
- | Hozzunk létre egy TodoController nevű kontrollert. Használjuk hozzá Artisan parancsot: | ||
- | |||
- | php artisan make: | ||
- | |||
- | |||
- | A következő állomány generálódik: | ||
- | * app/ | ||
- | |||
- | |||
- | A létrehozott kontroller a következőt tartalmazza: | ||
- | |||
- | <code php app/ | ||
- | <?php | ||
- | |||
- | namespace App\Http\Controllers; | ||
- | |||
- | use Illuminate\Http\Request; | ||
- | |||
- | class TodoController extends Controller | ||
- | { | ||
- | // | ||
- | } | ||
- | </ | ||
- | |||
- | |||
- | |||
- | Készítsünk egy függvényt a TodoController osztályon belül, | ||
- | amit írhatunk a < | ||
- | |||
- | <code php> | ||
- | public function list() { | ||
- | $todos[' | ||
- | $todos[' | ||
- | $todos[' | ||
- | return view(' | ||
- | } | ||
- | </ | ||
- | |||
- | A view() függvényt, | ||
- | az útválasztóban. | ||
- | Első paramétere a megjelenítendő nézet, a második paraméter | ||
- | egy asszociatív tömb, amely tartalmazza a szükséges adatokat | ||
- | a nézet számára. Ahogy az útválasztóban is tettük, a tömb | ||
- | minden kulcsszava a nézetben egy változó neve. | ||
- | |||
- | A **TodoController.php** teljes tartalma most: | ||
- | |||
- | <code php app/ | ||
- | <?php | ||
- | |||
- | namespace App\Http\Controllers; | ||
- | |||
- | use Illuminate\Http\Request; | ||
- | |||
- | class TodoController extends Controller | ||
- | { | ||
- | // | ||
- | public function list() { | ||
- | $todos[' | ||
- | $todos[' | ||
- | $todos[' | ||
- | return view(' | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | |||
- | Most be kell jegyeznünk az útválasztóban a kontrollert. | ||
- | |||
- | |||
- | |||
- | Szerkesszük újra a routes/ | ||
- | Az állomány elején mondjuk meg, hogy szeretnénk használni a | ||
- | TodoController osztályt: | ||
- | |||
- | <code php> | ||
- | use App\Http\Controllers\TodoController; | ||
- | </ | ||
- | |||
- | |||
- | Majd javítsuk a /list hivatkozást így: | ||
- | <code php> | ||
- | Route:: | ||
- | </ | ||
- | |||
- | Az első paraméter megmondja, hogy ha /list hivatkozás érkezik, akkor a | ||
- | második paraméterben megadott TodoController osztály list() függvényét futtassuk. | ||
- | |||
- | Nézzük meg újra az eredményt, bár látványos változást nem fogunk látni. | ||
- | Esetleg javítsuk ki az egyik tennivaló szövegét, hogy lássuk a változást, | ||
- | majd böngészőben: | ||
- | localhost: | ||
- | |||
- | ===== A with használata ===== | ||
- | |||
- | Az előző fejezetben, a TodoController osztályban az adatokat, | ||
- | a view() függvény második paraméterében adtuk át. Most lássuk | ||
- | hogyan adhatjuk át egy másik módszerrel, | ||
- | használatával. | ||
- | |||
- | A TodoController.php fájlban javítsuk a view() függvényünket így: | ||
- | return view(' | ||
- | |||
- | A teljes kód: | ||
- | |||
- | <code php TodoController.php> | ||
- | <?php | ||
- | |||
- | namespace App\Http\Controllers; | ||
- | |||
- | use Illuminate\Http\Request; | ||
- | |||
- | class TodoController extends Controller | ||
- | { | ||
- | // | ||
- | public function list() { | ||
- | $todos[' | ||
- | $todos[' | ||
- | $todos[' | ||
- | |||
- | // return view(' | ||
- | return view(' | ||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | |||
- | |||
- | A nézetben javítsuk: | ||
- | |||
- | <code html> | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | |||
- | A teljes kód: | ||
- | <code html resources/ | ||
- | < | ||
- | |||
- | < | ||
- | < | ||
- | |||
- | <ul> | ||
- | < | ||
- | < | ||
- | < | ||
- | </ul> | ||
- | |||
- | < | ||
- | </ | ||
- | |||
- | Nézzük meg az eredményt böngészőben: | ||
- | localhost: | ||
- | |||
- | ==== A tömb újratervezése ==== | ||
- | |||
- | Most tervezzük újra a tömbünket: | ||
- | |||
- | <code php> | ||
- | $todos = [ | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ]; | ||
- | </ | ||
- | |||
- | |||
- | A teljes kód: | ||
- | |||
- | <code php TodoController.php> | ||
- | <?php | ||
- | |||
- | namespace App\Http\Controllers; | ||
- | |||
- | use Illuminate\Http\Request; | ||
- | |||
- | class TodoController extends Controller | ||
- | { | ||
- | // | ||
- | public function list() { | ||
- | $todos = [ | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ]; | ||
- | |||
- | return view(' | ||
- | } | ||
- | } | ||
- | |||
- | </ | ||
- | |||
- | Az első feladatot is átírtam, hogy látszódjon a változás a böngészőben. | ||
- | Mentsünk és nézzük meg újra a böngészőben: | ||
- | localhost: | ||
- | |||
- | |||
- | |||
- | |||
- | ===== Egy változó bejárása ===== | ||
- | |||
- | Tervezzük újra a list.blade.php fájlban a listaelemek kiírását. | ||
- | Jelenleg 3 darab feladatot tud fogadni a list.blade.php sablonunk. | ||
- | Ha az teendők adatbázisból jönnek, nem tudjuk hány teendő lesz. | ||
- | Olyan megoldásra van szükségünk, | ||
- | teendők listáján, és legyártja a li elemeket. | ||
- | |||
- | Ehhez @foreach utasítás használjuk, | ||
- | |||
- | <code html> | ||
- | @foreach($todos as $item) | ||
- | < | ||
- | @endforeach | ||
- | </ | ||
- | |||
- | A teljes kód most így néz ki: | ||
- | <code html resources/ | ||
- | < | ||
- | |||
- | < | ||
- | < | ||
- | |||
- | <ul> | ||
- | @foreach($todos as $item) | ||
- | < | ||
- | |||
- | @endforeach | ||
- | </ul> | ||
- | |||
- | < | ||
- | |||
- | </ | ||
- | |||
- | |||
- | |||
- | Az egyik teendőn is változtathatunk, | ||
- | |||
- | ' | ||
- | |||
- | |||
- | Nézzük meg az eredményt a böngészőben: | ||
- | localhost: | ||
- | |||
- | |||
- | ===== Az adatok view()-ban ===== | ||
- | |||
- | Újra elővesszük az adatok átadását a view() függvényben. | ||
- | Az előző fejezetek egyikben egy $todos nevű tömböt adtunk át | ||
- | a list.blade.php nézetnek. A nézetben ennek megfelelően ilyen | ||
- | változó kellett szerepeljen: | ||
- | Vagyis meg kell egyezzen a tömb neve mindkét helyen. | ||
- | |||
- | Ha szeretnénk megőrizni a list.blade.php fájlban a $todos | ||
- | változónevet, | ||
- | változóban vannak, akkor írjuk a következőt: | ||
- | |||
- | <code php> | ||
- | return view(' | ||
- | ' | ||
- | ]); | ||
- | </ | ||
- | |||
- | Legyen egy új feladat is: | ||
- | ' | ||
- | |||
- | A teljes kód: | ||
- | |||
- | <code php app/ | ||
- | <?php | ||
- | |||
- | namespace App\Http\Controllers; | ||
- | |||
- | use Illuminate\Http\Request; | ||
- | |||
- | class TodoController extends Controller | ||
- | { | ||
- | // | ||
- | public function list() { | ||
- | $data = [ | ||
- | ' | ||
- | ' | ||
- | ' | ||
- | ]; | ||
- | |||
- | return view(' | ||
- | ' | ||
- | ]); | ||
- | } | ||
- | } | ||
- | |||
- | </ | ||
- | |||
- | Nézzük meg a böngészőben: | ||
- | localhost: | ||
- | |||
- | ===== Adatbázis ===== | ||
- | |||
- | ==== Elérés ==== | ||
- | |||
- | Az adatok általában adatbázisból jönnek, ezért adatbáziselérést fogunk beállítani. | ||
- | |||
- | Vegyük fel az adatbázist, | ||
- | A táblákat nem szükséges létrehozni, | ||
- | nevű szolgáltatásával hozzuk létre. | ||
- | |||
- | Adatbázis hozzáférés beállítására két lehetőség van: | ||
- | * config/ | ||
- | * .env | ||
- | |||
- | A database.php fájlban az alkalmazás végleges helyén megadott | ||
- | hozzáférést szoktuk beállítani. A fejlesztéshez használjuk | ||
- | a .env állományt. | ||
- | |||
- | Keressük meg a .env fájlban a következő részt: | ||
- | <code php> | ||
- | DB_CONNECTION=mysql | ||
- | DB_HOST=127.0.0.1 | ||
- | DB_PORT=3306 | ||
- | DB_DATABASE=laravel | ||
- | DB_USERNAME=root | ||
- | DB_PASSWORD= | ||
- | </ | ||
- | |||
- | Állítsuk be az adatbázisunk hozzáférési adatait. | ||
- | |||
- | Például: | ||
- | |||
- | <code php> | ||
- | DB_CONNECTION=mysql | ||
- | DB_HOST=127.0.0.1 | ||
- | DB_PORT=3306 | ||
- | DB_DATABASE=mytodo | ||
- | DB_USERNAME=mytodo | ||
- | DB_PASSWORD=titok | ||
- | </ | ||
- | |||
- | |||
- | |||
- | ==== Tábla létrehozása ==== | ||
- | |||
- | A migrációk a következő helyen találhatók: | ||
- | * database/ | ||
- | |||
- | Hozzuk létre a saját migrációs osztályunkat a todos tábla elkészítéséhez: | ||
- | |||
- | php artisan make: | ||
- | |||
- | Az elkészült fájl nevében benne lesz az aktuális dátum is. | ||
- | Egy ilyen fájl jött számomra létre: | ||
- | * 2021_08_03_205737_create_todos_table.php | ||
- | |||
- | A fájl tartalmazni fog egy **up()** és egy **down()** függvényt. | ||
- | |||
- | Az up() függvény átírásával kialakítjuk a táblánkat. | ||
- | |||
- | |||
- | A **create_todos_table.php** végződésű állomány tartalma: | ||
- | |||
- | <code php database/ | ||
- | <?php | ||
- | |||
- | use Illuminate\Database\Migrations\Migration; | ||
- | use Illuminate\Database\Schema\Blueprint; | ||
- | use Illuminate\Support\Facades\Schema; | ||
- | |||
- | class CreateTodosTable extends Migration | ||
- | { | ||
- | /** | ||
- | * Run the migrations. | ||
- | * | ||
- | * @return void | ||
- | */ | ||
- | public function up() | ||
- | { | ||
- | Schema:: | ||
- | $table-> | ||
- | $table-> | ||
- | }); | ||
- | } | ||
- | |||
- | /** | ||
- | * Reverse the migrations. | ||
- | * | ||
- | * @return void | ||
- | */ | ||
- | public function down() | ||
- | { | ||
- | Schema:: | ||
- | } | ||
- | } | ||
- | |||
- | </ | ||
- | |||
- | |||
- | A Schema:: | ||
- | Az első paraméter az elkészítendő tábla neve. | ||
- | A következő egy névtelen függvény, amely a Blueprint típusú | ||
- | objektumot vár paraméterként, | ||
- | |||
- | <code php> | ||
- | Schema:: | ||
- | $table-> | ||
- | $table-> | ||
- | }); | ||
- | </ | ||
- | |||
- | A < | ||
- | id nevű mezőt a táblában. A < | ||
- | egy időbélyegek számára is jöjjön létre két mező, automatikusan, | ||
- | ahol a rekord létrehozása és változtatása lehet feljegyezve. | ||
- | |||
- | Ez nekünk kevés, ezért kiegészítjük, | ||
- | |||
- | <code php> | ||
- | public function up() { | ||
- | Schema:: | ||
- | $table-> | ||
- | $table-> | ||
- | $table-> | ||
- | $table-> | ||
- | } | ||
- | } | ||
- | |||
- | </ | ||
- | |||
- | A < | ||
- | automatikusan növel, és a neve " | ||
- | ami string típusú. A következő done nevű mező, boolean típussal. Az utolsó timestamps() | ||
- | mezők létrehozását meghagytuk. | ||
- | |||
- | Futtassuk a következő migrációs utasítást: | ||
- | php artisan migrate | ||
- | |||
- | A parancs hatására, létrejön az adatbázisban a tábla. Ellenőrizzük PhpMyAdmin vagy | ||
- | mysql kliensen keresztül. | ||
- | |||
- | |||
- | Néhány fontosabb típus, amit megadhatunk függvényként: | ||
- | |||
- | * id | ||
- | * char | ||
- | * year | ||
- | * double | ||
- | * float | ||
- | * integer | ||
- | * date | ||
- | * string | ||
- | * text | ||
- | * time | ||
- | * timestamp | ||
- | * tinyText | ||
- | * boolean | ||
- | * dateTime | ||
- | * tinyInteger | ||
- | |||
- | További [[https:// | ||
- | |||
- | |||
- | Néhány példa mezők létrehozására, | ||
- | <code php> | ||
- | $table-> | ||
- | $table-> | ||
- | $table-> | ||
- | $table-> | ||
- | $table-> | ||
- | $table-> | ||
- | </ | ||
- | |||
- | ==== Adatok feltöltése ==== | ||
- | |||
- | Az adatokat a **Seeder** nevű szolgáltatással fogjuk feltölteni. | ||
- | Egy Seeder egy osztályként fog létrejönni. | ||
- | |||
- | Hozzunk létre egy feltöltőt: | ||
- | php artisan make:seeder TodoSeeder | ||
- | |||
- | A seeder a következő helyen tárolódik: | ||
- | * database/ | ||
- | |||
- | A fenti Artisan parancs után létrejön egy **TodoSeeder.php** állomány. | ||
- | Tartalma: | ||
- | |||
- | <code php database/ | ||
- | <?php | ||
- | |||
- | namespace Database\Seeders; | ||
- | |||
- | use Illuminate\Database\Seeder; | ||
- | |||
- | class TodoSeeder extends Seeder | ||
- | { | ||
- | /** | ||
- | * Run the database seeds. | ||
- | * | ||
- | * @return void | ||
- | */ | ||
- | public function run() | ||
- | { | ||
- | // | ||
- | } | ||
- | } | ||
- | |||
- | </ | ||
- | |||
- | |||
- | Szükségünk lesz a DB osztályra, vegyük használatba, | ||
- | use Illuminate\Support\Facades\DB; | ||
- | |||
- | |||
- | |||
- | |||
- | Írjuk meg a run() függvényt: | ||
- | |||
- | <code php> | ||
- | public function run() { | ||
- | DB:: | ||
- | ' | ||
- | ' | ||
- | ]); | ||
- | } | ||
- | </ | ||
- | |||
- | |||
- | A teljes kód: | ||
- | |||
- | <code php database/ | ||
- | <?php | ||
- | |||
- | namespace Database\Seeders; | ||
- | |||
- | use Illuminate\Database\Seeder; | ||
- | use Illuminate\Support\Facades\DB; | ||
- | |||
- | class TodoSeeder extends Seeder | ||
- | { | ||
- | /** | ||
- | * Run the database seeds. | ||
- | * | ||
- | * @return void | ||
- | */ | ||
- | public function run() | ||
- | { | ||
- | // | ||
- | |||
- | DB:: | ||
- | ' | ||
- | ' | ||
- | ]); | ||
- | } | ||
- | } | ||
- | |||
- | </ | ||
- | |||
- | Most futtatnunk kell a feltöltőt. Ha több feltöltőnk is van már, akkor | ||
- | a következő utasítás hatására mind elindul, és feltöltéseket végez: | ||
- | php artisan db:seed | ||
- | |||
- | Ha csak egyetlen feltöltőt akarunk működtetni, | ||
- | php artisan db:seed --class=TodoSeeder | ||
- | |||
- | |||
- | Ha két rekordot szeretnénk feltölteni, | ||
- | |||
- | <code php> | ||
- | public function run() | ||
- | { | ||
- | // | ||
- | DB:: | ||
- | ' | ||
- | ' | ||
- | ]); | ||
- | DB:: | ||
- | ' | ||
- | ' | ||
- | ]); | ||
- | } | ||
- | </ | ||
- | |||
- | |||
- | ==== Kész táblák frissítése ==== | ||
- | |||
- | php artisan migrate: | ||
- | |||
- | A parancs törli a meglévő adatokat. | ||
- | |||
- | ==== Kész táblák frissítése adatvesztés nélkül ==== | ||
- | |||
- | Új migrációs fájl létrehozása: | ||
- | php artisan make: | ||
- | |||
- | Beállítom az oszlop adatait. | ||
- | |||
- | Futtatjuk a migrációt: | ||
- | php artisan migrate | ||
- | |||
- | Ha az indexekkel probléma van: | ||
- | * https:// | ||
- | ===== Modell használata ===== | ||
- | |||
- | Most már van adatbázisunk egy **todos** táblával, | ||
- | amiben fel van véve néhány feladat is. | ||
- | A kontroller az adatokat egy modelltől fogja megkapni. | ||
- | |||
- | Egy **Todos** nevű modellt kell létrehozni. **A modell neve | ||
- | meg kell egyezzen a tábla nevével, de a modell neve | ||
- | legyen nagybetűs.** | ||
- | |||
- | php artisan make:model Todos | ||
- | |||
- | Létrejön egy **Todos.php** fájl. | ||
- | |||
- | Tartalma: | ||
- | <code php app/ | ||
- | <?php | ||
- | |||
- | namespace App\Models; | ||
- | |||
- | use Illuminate\Database\Eloquent\Factories\HasFactory; | ||
- | use Illuminate\Database\Eloquent\Model; | ||
- | |||
- | class Todos extends Model | ||
- | { | ||
- | use HasFactory; | ||
- | } | ||
- | |||
- | </ | ||
- | |||
- | |||
- | Ha a tábla létrehozásakor nem hagytuk meg az időbélyeg mezők | ||
- | létrehozását, | ||
- | public $timestamps = false; | ||
- | |||
- | Teljes osztály, ezek után: | ||
- | <code php> | ||
- | class Todos extends Model | ||
- | { | ||
- | use HasFactory; | ||
- | public $timestamps = false; | ||
- | } | ||
- | </ | ||
- | |||
- | A modellfájlban nincs is más teendőnk. | ||
- | |||
- | Most kérjük el a kontrollerben az összes tennivalót. | ||
- | Nyissuk meg a **TodoController.php** fájlt. | ||
- | |||
- | Vegyük használatba a modellt, írjuk az utolsó use után: | ||
- | use App\Models\Todos; | ||
- | |||
- | Hozzunk létre egy új függvényt **getTodos()** néven, a **TodoController** osztályon belül: | ||
- | |||
- | <code php> | ||
- | function getTodos() { | ||
- | $data = Todos:: | ||
- | return view(' | ||
- | } | ||
- | </ | ||
- | |||
- | Az útválasztóban javítsuk a meghívandó függvény nevét ' | ||
- | Route:: | ||
- | |||
- | Nézzük meg az eredményt böngészőben: | ||
- | localhost: | ||
- | |||
- | Ehhez hasonlót látunk: | ||
- | < | ||
- | {" | ||
- | {" | ||
- | {" | ||
- | {" | ||
- | {" | ||
- | </ | ||
- | |||
- | |||
- | Végül javítsunk a nézetfájlon: | ||
- | <code php resources/ | ||
- | < | ||
- | |||
- | < | ||
- | < | ||
- | |||
- | < | ||
- | @foreach($todos as $todo) | ||
- | <tr> | ||
- | < | ||
- | </tr> | ||
- | @endforeach | ||
- | </ | ||
- | |||
- | < | ||
- | </ | ||
- | |||
- | Nézzük meg az eredményt: | ||
- | localhost: | ||
- | |||
- | Innentől a tennivalók adatbázisból jönnek. | ||
- | |||
- | ===== Tennivaló törlése ===== | ||
- | |||
- | A nézetfájlban vegyünk fel egy új cellát a táblázatban: | ||
- | <code html> | ||
- | < | ||
- | </ | ||
- | |||
- | Beleírtunk egy linket, ami delet/ útvonalat tartalmazza és egy azonosítót. | ||
- | |||
- | Tulajdonképpen egy ilyen üzenet megy át, ha azonosító például 3: | ||
- | delete/3 | ||
- | |||
- | |||
- | A $todo[' | ||
- | |||
- | |||
- | A TodoController osztályban vegyünk fel egy új függvényt deleteTodo() néven: | ||
- | |||
- | <code php> | ||
- | function deleteTodo($id) { | ||
- | $data = Todos:: | ||
- | $data-> | ||
- | return redirect(' | ||
- | } | ||
- | </ | ||
- | |||
- | A függvény megkeresi a megadott azonosítójú feladatot, majd törli, végül átirányít a list | ||
- | nézetre. | ||
- | |||
- | |||
- | |||
- | Az útválasztóban vegyünk fel egy új útvonalat, amely delete/{id} hatására | ||
- | meghívja a törlő metódust: | ||
- | |||
- | <code php> | ||
- | Route:: | ||
- | </ | ||
- | |||
- | A {id} szövegben nem lehet szóköz. | ||
- | |||
- | Ellenőrizzük a böngészőben és próbáljuk ki a törlést. | ||
- | localhost: | ||
- | |||
- | ===== Tennivaló módosítása ===== | ||
- | |||
- | |||
- | Most, tegyük lehetővé adott feladat módosítását. | ||
- | Ehhez vegyük fel a list.blade.php fájlban egy új cellát, | ||
- | benne egy új linket: | ||
- | |||
- | <code html> | ||
- | < | ||
- | </ | ||
- | |||
- | |||
- | A módosítófelület létrehozásához szükséges egy új nézet. | ||
- | Legyen a neve edit.blade.php, | ||
- | |||
- | <code html resources/ | ||
- | < | ||
- | |||
- | < | ||
- | |||
- | <form action="/ | ||
- | @csrf | ||
- | <input type=" | ||
- | <input type=" | ||
- | <button type=" | ||
- | </ | ||
- | |||
- | |||
- | < | ||
- | </ | ||
- | |||
- | |||
- | Szükségünk van egy nézetre, ahol szerkeszthetjük a kívánt feladatot. | ||
- | |||
- | Hozzuk létre a szerkesztő felületet edit.balde.php néven: | ||
- | |||
- | <code html resources/ | ||
- | < | ||
- | |||
- | < | ||
- | |||
- | <form action="/ | ||
- | @csrf | ||
- | <input type=" | ||
- | <input type=" | ||
- | <button type=" | ||
- | </ | ||
- | |||
- | |||
- | < | ||
- | </ | ||
- | |||
- | Hozzuk létre a kontrollerben egy showTodo() nevű függvényt, | ||
- | amely kiírja a módosítandó adatokat. | ||
- | |||
- | <code php> | ||
- | function showTodo($id) { | ||
- | $data = Todos:: | ||
- | return view(' | ||
- | } | ||
- | </ | ||
- | |||
- | |||
- | |||
- | Most mondjuk meg az útválasztóban, | ||
- | formában, az kapja meg a edit nevű nézetet. | ||
- | |||
- | <code php> | ||
- | Route:: | ||
- | </ | ||
- | |||
- | Vegyünk fel egy újabb bejegyzést az útválasztóba, | ||
- | |||
- | <code php> | ||
- | Route:: | ||
- | </ | ||
- | |||
- | Majd a hivatkozott update() függvényt hozzuk létre a TodoController-ben is: | ||
- | |||
- | <code php> | ||
- | function update(Request $req) { | ||
- | $data = Todos:: | ||
- | $data-> | ||
- | $data-> | ||
- | return redirect(' | ||
- | } | ||
- | </ | ||
- | |||
- | A task a mező neve a táblában. | ||
- | |||
- | Próbáljuk ki a listaelem módosítását. | ||
- | |||
- | localhost: | ||
- | |||
- | ===== Tennivaló hozzáadása ===== | ||
- | |||
- | Tennivaló hozzáadásához szükségünk van egy új nézetre. | ||
- | |||
- | <code html resources/ | ||
- | < | ||
- | |||
- | < | ||
- | < | ||
- | @csrf | ||
- | <input type=" | ||
- | |||
- | <button type=" | ||
- | </ | ||
- | |||
- | < | ||
- | </ | ||
- | |||
- | |||
- | A TodoController osztályban hozzunk létre egy addTodo() nevű függvényt: | ||
- | |||
- | <code php app/ | ||
- | function addTodo(Request $req) { | ||
- | $todo = new Todos; | ||
- | $todo-> | ||
- | $todo-> | ||
- | $todo-> | ||
- | return redirect(' | ||
- | } | ||
- | </ | ||
- | |||
- | Jegyezzük be az útválasztóba: | ||
- | <code php> | ||
- | Route:: | ||
- | Route:: | ||
- | </ | ||
- | |||
- | |||
- | ===== Laravel Breeze azonosítás ===== | ||
- | |||
- | A tennivalóinkat szeretnék védeni, és csak azonosítás után szeretnénk | ||
- | az elérést engedélyezni. Ehhez a Laravel Breeze egyszerű azonosító | ||
- | rendszert fogjuk használni. | ||
- | |||
- | Telepítés: | ||
- | composer require laravel/ | ||
- | |||
- | |||
- | Egyszerű scaffolding azonosítás készítése: | ||
- | php artisan breeze: | ||
- | |||
- | Függőségek rendezése: | ||
- | npm install && npm run dev | ||
- | |||
- | |||
- | |||
- | Készítsük el az adatbázis tábláit: | ||
- | php artisan migrate | ||
- | |||
- | Most lesz egy /register és egy /login útvonalunk. | ||
- | |||
- | |||
- | A regisztrációs felületen (/ | ||
- | |||
- | Például: | ||
- | * Name: janos | ||
- | * Email: janos@tatami | ||
- | * Password: 12345678 | ||
- | * Confirm: Password: 12345678 | ||
- | |||
- | Szeretnénk védeni a /list nézetünket. | ||
- | Ehhez, keressük meg a routes/ | ||
- | |||
- | <code php> | ||
- | //... | ||
- | |||
- | Route:: | ||
- | return view(' | ||
- | }); | ||
- | </ | ||
- | |||
- | |||
- | |||
- | Kössünk a végéhez egy azonosítást: | ||
- | |||
- | <code php> | ||
- | //... | ||
- | |||
- | Route:: | ||
- | return view(' | ||
- | })-> | ||
- | </ | ||
- | |||
- | Ellenőrizzük. | ||
- | |||
- | ==== Alapértelmezett útvonal | ||
- | |||
- | Bejelentkezés után a /list útvonalat szeretnénk | ||
- | látni a dashboard helyett. | ||
- | |||
- | |||
- | Ehhez szerkesszük az app/ | ||
- | |||
- | Ott keressük meg a következő sort: | ||
- | |||
- | <code php> | ||
- | public const HOME = '/ | ||
- | </ | ||
- | |||
- | Javítsuk így: | ||
- | <code php> | ||
- | public const HOME = '/ | ||
- | </ | ||
- | |||
- | |||
- | ===== Kilépés ===== | ||
- | |||
- | Két lehetőségünk van: | ||
- | * A blade sablon fájlban form elemet használok. | ||
- | * Írok egy útvonalat, ami képes GET kérést kezelni. | ||
- | |||
- | |||
- | ==== Form használata ==== | ||
- | |||
- | A kilépési lehetőséghez készítsük el a formot: | ||
- | |||
- | <code html> | ||
- | <form action=" | ||
- | @csrf | ||
- | <button type=" | ||
- | {{ __(' | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | |||
- | Próbáljuk ki. | ||
- | ==== Írjunk GET kérést ==== | ||
- | |||
- | Használjuk az App\Http\Controllers\Auth\AuthenticatedSessionController-t kontrollert: | ||
- | |||
- | Az útválasztáshoz adjunk hozzá új bejegyzést. | ||
- | |||
- | Az útválasztóban vegyük használatba az elkészült kontrollert: | ||
- | <code php> | ||
- | use App\Http\Controllers\Auth\AuthenticatedSessionController; | ||
- | </ | ||
- | |||
- | |||
- | |||
- | Majd vegyük fel egy új útvonalat: | ||
- | <code php> | ||
- | Route:: | ||
- | </ | ||
- | |||
- | |||
- | Ezek után a list.blade.php nézetfájlban: | ||
- | |||
- | <code html> | ||
- | <a href=" | ||
- | </ | ||
- | |||
- | |||
- | A Kilépésre kattintva működik. Próbáljuk ki. | ||
- | |||
- | |||
- | |||
- | |||
- | ===== Függelék ===== | ||
- | ==== Alternatív projekt készítés ==== | ||
- | |||
- | === Szükséges === | ||
- | |||
- | < | ||
- | apt install curl docker-compose | ||
- | </ | ||
- | |||
- | |||
- | === Projekt létrehozása === | ||
- | |||
- | |||
- | Az egy-app nevű projekt létrehozása: | ||
- | < | ||
- | curl -s https:// | ||
- | </ | ||
- | |||
- | Létrejön egy **egy-app** nevű könyvtár, benne a laravel alkalmazással. | ||
- | |||
- | === Sail === | ||
- | |||
- | Indítsuk el a Laravel Sail-t. | ||
- | |||
- | |||
- | < | ||
- | cd egy-app | ||
- | ./ | ||
- | </ | ||
- | |||
- | Az első indítás eltarthat egy ideig. | ||
- | |||
- | |||
- | Ha megállt az üzenetek továbbítása, | ||
- | localhost/ | ||
- | |||
- | |||
- | Ügyeljünk arra, hogy a 80-s port szabad legyen, vagy állítsunk be | ||
- | egy másik portot, a **docker-compose.yml** fájlban: | ||
- | |||
- | Keressük meg a portbeállításokat: | ||
- | |||
- | < | ||
- | ports: | ||
- | - ' | ||
- | </ | ||
- | |||
- | Cseréljük erre: | ||
- | < | ||
- | ports: | ||
- | - 8000:80 | ||
- | </ | ||
- | |||
- | |||
- | ==== Kezdeti konfiguráció ==== | ||
- | |||
- | |||
- | Kezdeti konfigurációhoz tanulmányozzuk a **config/ | ||
- | |||
- | |||
- | ==== Alkönyvtárak a kontrollerben ==== | ||
- | |||
- | |||
- | Előfordul, hogy a resources/ | ||
- | hozunk létre, és abban hozok létre egy nézetfájlt, | ||
- | resources/ | ||
- | |||
- | Ilyen esetben a kontrollerben így hivatkozok a nézetre: | ||
- | |||
- | <code php> | ||
- | ... | ||
- | public function getData() { | ||
- | $msg = " | ||
- | return view(' | ||
- | } | ||
- | ... | ||
- | </ | ||
- | |||
- | Vegyük észre a products után pontot írtam a perjel helyett. | ||
- | |||
- | |||
- | ==== composer create-project ==== | ||
- | |||
- | A composer create-project parancsának sok helyen megadják a < | ||
- | kapcsolót. Ez nem szükséges, | ||
- | Ugyanakkor két " | ||
- | * < | ||
- | * < | ||
- | |||
- | A source hatására forrásból telepíti a projektet. | ||
- | A < | ||
- | A < | ||
- | |||
- | |||
- | Több információ | ||
- | * https:// | ||
- | |||
- | ==== Debian GNU/Linux 11 - PHP8.1 ==== | ||
- | |||
- | apt update | ||
- | |||
- | < | ||
- | apt -y install lsb-release apt-transport-https ca-certificates | ||
- | wget -O / | ||
- | </ | ||
- | |||
- | < | ||
- | echo "deb https:// | ||
- | </ | ||
- | |||
- | apt update | ||
- | |||
- | apt install php8.1 | ||
- | reboot | ||
- | |||
- | php --version | ||
- | |||
- | apt install php8.1-mysql | ||
- | apt install php8.1-xml | ||
- | apt install php8.1-curl | ||
- | |||
- | |||
- | ==== Laravel parancs ==== | ||
- | |||
- | Composer telepítése: | ||
- | choco install composer -y | ||
- | |||
- | A laravel parancs telepítése: | ||
- | composer global require laravel/ | ||
- | |||
- | A parancs a következő helyen telepszik: | ||
- | * c: | ||
- | |||
- | |||
- | Ezek után, projekt készítése: | ||
- | laravel new app01 | ||
- | |||
- | |||
- | ===== Linkek ===== | ||
- | |||
- | * https:// | ||
- | * https:// |
oktatas/web/back-end_framework/laravel/laravel_bevezetes.1709753260.txt.gz · Utolsó módosítás: 2024/03/06 20:27 szerkesztette: admin