LaravelTutorial: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „= Links = * Inspiriert von https://www.youtube.com/watch?v=cDEVWbz2PpQ (englisch) = Zielsetzung = Es wird eine Webapplikation "Notes" gebaut, die folgende grundlegende Fähigkeiten hat: * Registrierung mit Name, Email und Passwort. Speichern in einer Datenbank. * Login mit Name und Passwort, Abgleich mit Datenbank * Logout * Erstellen einer Notiz mit Titel und Nachricht * Anzeige aller Notizen des Benutzers * Edieren der Notiz * Löschen der Notiz = Vor…“) |
|||
Zeile 64: | Zeile 64: | ||
}); | }); | ||
</pre> | </pre> | ||
== Das Registrier-Formular == | |||
* resources/views/home.blade.php | |||
<pre> | |||
<div style="border: 3px solid black;"> | |||
<h2>Register</h2> | |||
<form action="/register" method="POST"> | |||
@csrf | |||
<input name="name" type="text" placeholder="name"> | |||
<input name="email" type="text" placeholder="email"> | |||
<input name="password" type="password" placeholder="password"> | |||
<button>Register</button> | |||
</form> | |||
</div> | |||
</pre> | |||
* @csrf: Sicherheit: https://en.wikipedia.org/wiki/Cross-site_request_forgery | |||
* /routes/web.php: | |||
<pre> | |||
Route::post('/register', function() { return 'We have registered'; }); | |||
</pre> | |||
* Browser aktualisieren (F5) | |||
== UserController erstellen == | |||
* Die Behandlung des Formulars passiert in einem "Controller" | |||
<syntaxhighlight lang="bash"> | |||
php artisan make:controller UserController | |||
</syntaxhighlight> | |||
* Es entsteht die Datei app/Http/Controllers/UserController | |||
* Wir erweitern die Klasse UserController um eine Methode register(), die die Registrierung vornimmt: | |||
<pre> | |||
class UserController extends Controller | |||
{ | |||
public function register(Request $request) { | |||
$incomingFields = $request->validate([ | |||
'name' => ['required', 'min:3', 'max:10', Rule::unique('users', 'name')], | |||
'email' => ['required', 'email', Rule::unique('users', 'email')], | |||
'password' => 'required' | |||
]); | |||
return 'Hello from UserController'; | |||
} | |||
} | |||
</pre> | |||
* Die Methode bekommt den Parameter $request, der die HTML-Infos der Seite enthält. | |||
* Der Aufruf von $request->validate() stellt Überprüfungen an: | |||
** In dem assoziativen Feld werden die zu überprüfenden Felder mit den Validierungsregeln verknüpft: | |||
** Das Feld "name" darf nicht leer sein ("required"), der Name muss mindestens 3 und darf maximal 10 Zeichen lang sein, der Name darf noch nicht in der DB in der Tabelle 'users' im Feld 'name' vorkommen. | |||
* Damit PHP die Klasse Rules in der Datei UserController.php kennt: Doppelklick auf Rule (Auswählen), dann Alt-Ctr-I (Import Class). In der Liste Illuminate\validation\Rule auswählen. | |||
* In der Datei routes/web.php: | |||
<pre> | |||
Route::post('/register', [UserController::class, 'register']; }); | |||
</pre> | |||
* Mit der URL /register wird die Methode 'register' in der Klasse UserController aufgerufen. | |||
* Damit PHP die Klasse UserController in der Datei web.php kennt: UserController doppelklicken (Auswählen): Rechte Maustaste: "Import Class" (oder Alt-Ctr-I). Es wird dann der Import erledigt. | |||
* Browser mit F5 aktualisieren: | |||
** Nichts eingeben, auf Button "Register" klicken: nichts passiert | |||
** Alle 3 Felder ausfüllen und dann Button "Register" klicken: Fehlermeldung, dass Benutzer nicht angemeldet ist. Das ist so korrekt, die Validierung ist demnach korrekt durchlaufen. |
Version vom 24. September 2023, 10:36 Uhr
Links
- Inspiriert von https://www.youtube.com/watch?v=cDEVWbz2PpQ (englisch)
Zielsetzung
Es wird eine Webapplikation "Notes" gebaut, die folgende grundlegende Fähigkeiten hat:
- Registrierung mit Name, Email und Passwort. Speichern in einer Datenbank.
- Login mit Name und Passwort, Abgleich mit Datenbank
- Logout
- Erstellen einer Notiz mit Titel und Nachricht
- Anzeige aller Notizen des Benutzers
- Edieren der Notiz
- Löschen der Notiz
Voraussetzungen
- Visual Studio Code ist installiert, ebenso die Erweiterungen PHP, PHP Namespace Resolver, Laravel Blade Snippets
- Composer ist installiert.
Vorgehen
Erstellen des Projekts
PROJ=notes
BASE=/home/ws/php/$PROJ
mkdir -p $BASE
cd $BASE
composer create-project laravel/laravel .
- Damit wird ein Verzeichnis $BASE/notes erstellt, und mittels Composer das Grundgerüst der Applikation erstellt.
- Es steht dann das PHP-Script **artisan** zur Verfügung, mit dem Laravel-Kommandos gegeben werden können.
- Interessant ist auch die Datei .env, in der die Konfiguration der Applikation stattfindet.
Starten des Webservers
Es gibt einen eingebauten Webserver für die Entwicklung:
cd $BASE
./artisan serve
Die Applikation steht dann im Browser unter http://localhost:8000 zur Verfügung.
Modifizieren der Homepage
- Die erstellte Homepage steht in der Datei resources/views/welcome.blade.php
- Diese Datei öffnen und im Quelltext was ändern
- Im Browser F5 drücken, der geänderte Text wird sichtbar
Neue Homepage erstellen
- Neue Datei: resources/views/home.blade.php Wichtig: endet immer mit .blade.php
- Eintippen: ! Es erscheint ein Icon "Schraubenschlüssel" mit Titel !. Dieses anklicken. Damit wird ein HTML-Grundgerüst erstellt.
- Titel korigieren: <title>Notes</title>
- Im Body:
<h1>Test</h1>
- Speichern
- Datei routes/web.php
Route::get('/', function () { return view('welcome'); });
- Hier steht der Aufruf der Datei welcome.blade.php
- Wir ersetzen das durch unsere eigene Datei home.blade.php:
Route::get('/', function () { return view('home'); });
Das Registrier-Formular
- resources/views/home.blade.php
<div style="border: 3px solid black;"> <h2>Register</h2> <form action="/register" method="POST"> @csrf <input name="name" type="text" placeholder="name"> <input name="email" type="text" placeholder="email"> <input name="password" type="password" placeholder="password"> <button>Register</button> </form> </div>
- @csrf: Sicherheit: https://en.wikipedia.org/wiki/Cross-site_request_forgery
- /routes/web.php:
Route::post('/register', function() { return 'We have registered'; });
- Browser aktualisieren (F5)
UserController erstellen
- Die Behandlung des Formulars passiert in einem "Controller"
php artisan make:controller UserController
- Es entsteht die Datei app/Http/Controllers/UserController
- Wir erweitern die Klasse UserController um eine Methode register(), die die Registrierung vornimmt:
class UserController extends Controller { public function register(Request $request) { $incomingFields = $request->validate([ 'name' => ['required', 'min:3', 'max:10', Rule::unique('users', 'name')], 'email' => ['required', 'email', Rule::unique('users', 'email')], 'password' => 'required' ]); return 'Hello from UserController'; } }
- Die Methode bekommt den Parameter $request, der die HTML-Infos der Seite enthält.
- Der Aufruf von $request->validate() stellt Überprüfungen an:
- In dem assoziativen Feld werden die zu überprüfenden Felder mit den Validierungsregeln verknüpft:
- Das Feld "name" darf nicht leer sein ("required"), der Name muss mindestens 3 und darf maximal 10 Zeichen lang sein, der Name darf noch nicht in der DB in der Tabelle 'users' im Feld 'name' vorkommen.
- Damit PHP die Klasse Rules in der Datei UserController.php kennt: Doppelklick auf Rule (Auswählen), dann Alt-Ctr-I (Import Class). In der Liste Illuminate\validation\Rule auswählen.
- In der Datei routes/web.php:
Route::post('/register', [UserController::class, 'register']; });
- Mit der URL /register wird die Methode 'register' in der Klasse UserController aufgerufen.
- Damit PHP die Klasse UserController in der Datei web.php kennt: UserController doppelklicken (Auswählen): Rechte Maustaste: "Import Class" (oder Alt-Ctr-I). Es wird dann der Import erledigt.
- Browser mit F5 aktualisieren:
- Nichts eingeben, auf Button "Register" klicken: nichts passiert
- Alle 3 Felder ausfüllen und dann Button "Register" klicken: Fehlermeldung, dass Benutzer nicht angemeldet ist. Das ist so korrekt, die Validierung ist demnach korrekt durchlaufen.