Select Page

Die erste Anwendung mit Laravel entwickeln – Ein Erfahrungsbericht

by | Feb 20, 2024 | NETWAYS, Ausbildung

Als Auszubildende im 1. Lehrjahr bei NETWAYS hatte ich im Rahmen eines Übungsprojekts die Gelegenheit, meine ersten Erfahrungen in der Webentwicklung zu sammeln. In diesem Beitrag möchte ich beispielhaft die Arbeit mit dem PHP-Framework Laravel teilen.

 

Warum Laravel?

  • Open Source und Full-Stack: Laravel ist ein leistungsstarkes Open-Source-Framework für die Entwicklung von Webanwendungen. Es bietet viele Tools für die Frontend- und Backend-Entwicklung.
  • Umfangreiches Lernmaterial: Laravel stellt umfangreiche Lernressourcen bereit, darunter Videos und eine gut strukturierte Dokumentation direkt auf der Website.
  • Einfache Installation: Die Installation von Laravel ist gut dokumentiert und einfach durchzuführen. Mit Composer (einem Packetmanager) kann schnell ein neues Projekt erstellt werden.

 

Ein einfaches Projekt nach dem MVC-Prinzip

Da ich in meiner Ausbildung bei NETWAYS sehr viele neue und spannende IT-Begriffe lerne, hatte ich die Idee, eine App für ein Glossar von IT-Begriffen zu entwickeln. Ein Übungsprojekt für die Arbeit mit Git bot eine passende Möglichkeit dazu. Im Team entschieden wir uns für das Framework Laravel aufgrund seiner vordefinierten Struktur nach dem MVC-Prinzip (Model, View, Controller). Die wichtigsten Dateien für ein einfaches MVC-Muster in Laravel befinden sich bereits in vordefinierten Ordnern:

View: resources/views/dashboard.blade.php

Controller: app/Http/Controllers/Controller.php, routes/web.php

Model: app/Models/Item.php

 

Implementierung eines Delete-Buttons

Die Implementierung eines Delete-Buttons in unserer Anwendung ermöglicht es Benutzer:innen, Einträge aus dem Glossar zu löschen. Anhand dieses Buttons soll der Workflow mit Laravel exemplarisch dargestellt werden. Die benötigte Datenbank für die Einträge wurde, für die Entwicklung, zunächst als SQLite-Datenbank im Ordner ‚database‘ erstellt und die Migration vorgenommen. Da SQLite ohne Serverinstallation direkt in einer Anwendung verwendet werden und in einer einzigen Datei gespeichert und bearbeitet wird, eignet es sich besonders gut für eine lokal Entwicklungsumgebung.

 

View (Blade-Template):

In Blade, dem standardmäßigen Template Engine, wurde ein HTML-Formular erstellt, das den Delete-Button enthielt. Das Formular ist so konfiguriert, dass es die del_item-Route aufruft, wobei die ID des Glossar-Eintrags als Parameter übergeben wird. Der CSRF-Token (Cross-Site-Request-Forgery) wird für Sicherheitszwecke hinzugefügt. Die geschweiften Klammern sind eine eingebaute Funktion in Blade für die Übergabe von PHP-Variablen.

<form action="{{ route('del_item', $item->id) }}" method="post" style="display: inline;">
    @csrf
    @method('DELETE')
    <button type="submit" class="cta-button">Delete</button>
</form>

 

Route:

In der ‚web.php’-Datei wurde eine Route definiert. Die Route ist ein Bindeglied, das für die Handhabung von HTTP-Anforderungen angelegt wird, um die URL mit der entsprechenden Controller-Methode zu verknüpfen. Im Beispiel des Löschvorgangs wurde der HTTP Request Methode DELETE angewendet und mit der Controller-Methode verknüpft. Der Name der Route ist hier ‚del_item‘. Die Funktionalität ‚middleware‘ sorgt dafür, dass diese Route nur mit entsprechender Authentifizierung ausgeführt werden kann.

Route::delete('/dashboard/item/{id}', [ItemController::class, 'del_item'])
    ->name('del_item')
    ->middleware('auth');

 

Controller:

Der Controller sorgt für die Organisation der Anwendungslogik und ist für die Verarbeitung von Anfragen und die Steuerung des Datenflusses zwischen View und Model zuständig. Im ItemController.php,
der die Items in der Datenbank verwaltet, wird die Methode ‚del_item‘ implementiert. Diese Methode nimmt die ID des zu löschenden Glossar-Eintrags als Parameter an. Der Eintrag wird identifiziert und gelöscht. Daraufhin wird der Benutzer zur Dashboard-Ansicht weitergeleitet.

class ItemController extends Controller
{
    public function del_item($id)
    {
        $item = Item::find($id);
        if ($item) {
            $item->delete();
        }
        return redirect()->route('dashboard');
    }
}

 

Model:

In der Eloquent Models-Datei ‚Item.php‘ wurde bereits die Klasse für die Datenverwaltung angelegt. Auf dieses Model wird auch bei der Löschung zugegriffen. Laravel bietet die $fillable-Eigenschafft, um anzugeben welche Attribute (in diesem Fall Spaltenname der Tabelle) an die Datenbank übergeben werden sollen.

class Item extends Model
{
use HasFactory;
protected $fillable = ['title', 'description'];
}

 

Dank des Entwicklungswebservers konnte die Funktionalität schnell geprüft werden. Durch das Klicken des Buttons wird der Eintrag aus der Datenbank gelöscht.

 

Meine Lernerfahrung

Die ersten Schritte mit Laravel waren aufgrund der Verschachtelung von Ordnern und Inhalten etwas wackelig. Mit einiger Recherche und Hilfe konnte ich jedoch die Abläufe eines MVC-Prinzips verstehen und anwenden. Laravel bietet eine umfangreiche Struktur, die sowohl einfachen als auch komplexen Funktionalitäten Raum gibt. Nach diesem erfolgreichen Versuch bin ich motiviert, weiter mit Laravel zu arbeiten und meine Fähigkeiten in der Anwendungsentwicklung auszubauen. Besonders die kompetente Unterstützung durch erfahrene Kollegen wie Markus Opolka und Feu Mourek verhalf mir zu meinem Lernerfolg.

 

Jolien Trog
Jolien Trog
Junior Developer

Jolien ist seit September 2023 Teil des Icinga Team und macht dort ihre Ausbildung zur Fachinformatikerin für Anwendungsentwicklung. Ihre Aufgabe ist zunächst viel zu lernen, um später an Projekten mitarbeiten zu können. Nach einem Tag am Computer schwingt sie sich begeistert aufs Rennrad und genießt die vorbeifliegende Natur.

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

More posts on the topic NETWAYS | Ausbildung

Monthly Snap März 2024

Endlich Frühling in Nürnberg! Die Laune ist doch morgens gleich besser, wenn es schon hell ist, wenn man aus dem Haus geht. Wir haben im März viele schöne Blogposts für Euch gehabt. Falls Ihr welche davon verpasst hat, hier ein Überblick für Euch. Aber natürlich...

OSMC 2023 | Will ChatGPT Take Over My Job?

One of the talks at OSMC 2023 was "Will ChatGPT take over my job?" by Philipp Krenn. It explored the changing role of artificial intelligence in our lives, raising important questions about its use in software development.   The Rise of AI in Software...

Monthly Snap Februar 2024

Der Februar war ein ereignisreicher Monat bei NETWAYS! Neben dem normalen Alltag gab es auch unser Jahresmeeting, ein Spieleabend im Büro, und viele Kollegen waren auf Konferenzen und der Jobmesse in Nürnberg unterwegs. Und natürlich wurden viele Blogposts zu...