In diesem Blogbeitrag möchte ich dokumentieren, wie ich meine erste Laravel Anwendung gebaut habe.
Es geht bei der Anwendung “Wo2oderMehr” darum, dass in Zeiten von COVID-19 nun wieder Gottesdienste erlaubt sind, unter Einhaltung des Mindestabstands. Die Anwendung hilft dabei, dass die Besucher sich (ohne Benutzerkonto) anmelden können, und dadurch die Gesamtanzahl der Besucher beschränkt werden kann. Weitere Infos auf www.wo2odermehr.de

Der Quelltext befindet sich hier: https://github.com/SolidCharity/where2ormore

Ich bin unter anderem dieser Anleitung gefolgt: https://laravel-news.com/your-first-laravel-application

Installation

Siehe https://laravel.com/docs/7.x
Ich habe die Schritte hier dokumentiert: https://github.com/SolidCharity/where2ormore/blob/master/INSTALL.md

Erste Einrichtung der Laravel Anwendung

siehe https://laravel.com/docs/7.x#installing-laravel

composer global require laravel/installer
composer require doctrine/dbal
export PATH=$PATH:~/.composer/vendor/bin
cd /var/www
laravel new where2ormore

chmod a+w /var/www/where2or3/storage/logs
chmod a+w /var/www/where2or3/storage/framework/sessions
chmod a+w /var/www/where2or3/storage/framework/views

In meiner nginx Konfiguration in /etc/nginx/conf.d/where2ormore.conf musste ich noch konfigurieren:

root /var/www/where2ormore/public;

location / {
    index index.html index.htm index.php;
    try_files $uri $uri/ /index.php?$query_string;
}

Datenbank einrichten und erste Tabelle erstellen

siehe https://laravel.com/docs/7.x/migrations

# um eine neue Tabelle services anzulegen:
php artisan make:migration create_services_table
# nun die Spalten anlegen, ggf. auch Daten:
vi database/migrations/<datum>_create_services_table.php
# suche nach DB_, und setze Datenbank, Benutzer und Kennwort
vi .env
# nun wird die Tabelle angelegt
php artisan migrate

Entsprechend können auch später neue Tabellen oder neue Spalten zu existierenden Tabellen hinzugefügt werden.

UI anlegen

composer require laravel/ui
php artisan ui bootstrap
npm install && npm run dev
vi routes/web.php
vi resources/views/welcome.blade.php

Model anlegen und erweitern

php artisan make:model --factory Service
php artisan make:model --factory Participant
php artisan make:model --factory Tenant
vi app/Service.php
vi app/Participant.php

Benutzerverwaltung

siehe https://www.itsolutionstuff.com/post/laravel-6-multi-auth-authentication-tutorialexample.html

php artisan ui:auth
vi app/Http/Middleware/Authenticate.php
vi app/Http/Controllers/Auth/RegisterController.php
vi resources/views/auth/register.blade.php

Routen und Controller

siehe https://www.techiediaries.com/laravel/php-laravel-7-6-tutorial-crud-example-app-bootstrap-4-mysql-database/

php artisan make:controller FrontendController --resource
php artisan make:controller ServiceController --resource
php artisan make:controller ParticipantController --resource
vi app/Http/Controllers/FrontendController.php
vi routes/web.php

Übersetzung

siehe https://laravel.com/docs/7.x/localization

vi resources/lang/de/messages.php
# die Sprache aus dem Browser Agent erkennen
php artisan make:middleware SetLocale
vi ./app/Http/Middleware/SetLocale.php

siehe die Übersetzungen auf https://github.com/caouecs/Laravel-lang

composer require caouecs/laravel-lang:~6.0
cp vendor/caouecs/laravel-lang/src/nl/* resources/lang/nl
cp vendor/caouecs/laravel-lang/src/de/* resources/lang/de
cp vendor/caouecs/laravel-lang/json/nl.json resources/lang/
cp vendor/caouecs/laravel-lang/json/de.json resources/lang/

Log Datei und Debuggen

Bei Problemen, sollte man immer in storage/logs/laravel.log schauen. Und in der Datei .env, kann man APP_DEBUG=false oder APP_DEBUG=true setzen, dann werden Fehler auch direkt in der Webseite angezeigt.

Einstieg in Laravel mit der Anwendung Wo2oderMehr
Markiert in: