Seite wählen

NETWAYS Blog

Die erste Anwendung mit Laravel entwickeln – Ein Erfahrungsbericht

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.

Icinga Webinare im Dezember

NETWAYS Webinare Nachdem im Rahmen einer wieder einmal erfolgreichen OSMC sowohl eine neue Version von Icinga 2 als auch Icinga Web 2 veröffentlicht wurde, wollen wir natürlich die Gelegenheit nutzen, diese in unseren Webinaren vorzustellen.
Die Termine im Dezember stehen bereits fest und wir freuen uns wie immer auf eine rege Teilnahme zum Abschluss dieses erfolgreichen Jahres!

Titel Zeitraum Registrierung
Icinga 2 – Neues in 2.4 08. Dezember 2015 – 10:30 Uhr Anmelden
Icinga Web 2: Das neue Interface 09. Dezember 2015 – 10:30 Uhr Anmelden
Christian Stein
Christian Stein
Manager Sales

Christian kommt ursprünglich aus der Personalberatungsbranche, wo er aber schon immer auf den IT Bereich spezialisiert war. Bei NETWAYS arbeitet er als Manager Sales und berät unsere Kunden in der vertrieblichen Phase rund um das Thema Monitoring. Gemeinsam mit Georg hat er sich Mitte 2012 auch an unserem Hardware-Shop "vergangen".

PHP statt Python

Vor nicht all zu langer Zeit wurde in dem Blog Post (Python statt PHP) das Python Flask Microframework kurz vorgestellt und um PHP jetzt nicht im Regen stehen zu lassen, habe ich mich kurz schlau gemacht und was vergleichbares fürs PHP gefunden.
Darf ich vorstellen: Slim, das PHP Microframework
Damit lässt sich recht schnell was einfaches bauen und ist auch recht einfach aufgesetzt, aber schaut selbst:
Install & Download

composer require slim/slim

Programmcode

get('/hello/:name', function ($name) {
    echo "Hello, $name";
});
$app->run();

Das wars auch schon und jetzt viel Spaß damit.

Letzter Aufruf für das Icinga Web 2 Webinar

icinga_logo_200x69 Nachdem letzte Woche erfolgreich die Open Source Monitoring Conference (OSMC) stattgefunden hat und aufgrund der vielen Info-Blogposts der ein oder andere vielleicht den Webinar-Reminder übersehen hat, möchte ich natürlich kurz vor dem Icinga Web 2 Webinar noch einmal darauf aufmerksam machen.
Morgen um 10:30 Uhr wollen wir die aktuelle Version von Icinga Web 2 inkl. der eingebauten Features und den Installer vorstellen. Eine Registrierung ist natürlich bis morgen Früh noch möglich.
Wer sich für die nächsten Webinare in diesem Jahr noch interessiert, kann sich natürlich auch gleich registrieren:

Webinar Thema Termin und Registrierung
Puppet: Windows Configuration Management 12. Dezember 2014 – 10:30 Uhr
NETWAYS: Jahresrückblick 2014 18. Dezember 2014 – 10:30 Uhr

In unserem Webinar-Archiv findet man auch noch die bisherigen Webinare, um die Wartezeit zu überbrücken.
Bis morgen!

Christian Stein
Christian Stein
Manager Sales

Christian kommt ursprünglich aus der Personalberatungsbranche, wo er aber schon immer auf den IT Bereich spezialisiert war. Bei NETWAYS arbeitet er als Manager Sales und berät unsere Kunden in der vertrieblichen Phase rund um das Thema Monitoring. Gemeinsam mit Georg hat er sich Mitte 2012 auch an unserem Hardware-Shop "vergangen".

Reminder für das Icinga Web 2 Webinar

icinga_logo_200x69 Heute einmal früher als sonst möchte ich auf das Icinga Web 2 Webinar aufmerksam machen, welches bereits nächste Woche Dientag, den 25. November 2014 um 10:30 Uhr stattfindet. Wer daran teilnehmen möchte, kann sich natürlich gerne noch registrieren.
Inhalte werden vor allem die Neuerungen seit dem letzten Webinar sein sowie der Installer und verschiedene Module.
Diejenigen die diese Woche an der OSMC und sogar am Workshop ‚Extending Icinga Web 2‘ teilnehmen, haben natürlich während unseres Webinars noch einmal die Gelegenheit sich alles in Ruhe zeigen zu lassen. Wie immer freuen wir uns natürlich auf eine rege Teilnahme und viel konstruktives Feedback.
Wem die Wartezeit zu lange ist, der kann sich natürlich in unserem Webinar-Archiv das ein oder andere vergangene Webinar-Video noch anschauen.
Vielleicht sieht man sich diese Woche auf der Konferenz – ansonsten hört man sich spätestens nächste Woche Dienstag!

Christian Stein
Christian Stein
Manager Sales

Christian kommt ursprünglich aus der Personalberatungsbranche, wo er aber schon immer auf den IT Bereich spezialisiert war. Bei NETWAYS arbeitet er als Manager Sales und berät unsere Kunden in der vertrieblichen Phase rund um das Thema Monitoring. Gemeinsam mit Georg hat er sich Mitte 2012 auch an unserem Hardware-Shop "vergangen".