Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. PHP
Code

Bauen Sie Ihr erstes Admin-Paket für Laravel auf

by
Difficulty:IntermediateLength:LongLanguages:

German (Deutsch) translation by Tatsiana Bochkareva (you can also view the original English article)

Es ist schwer zu bestreiten, dass die PHP-Community sich für Laravel 4 begeistert. Das Framework nutzt unter anderem die Möglichkeiten von Composer, was bedeutet, dass jedes Paket oder Skript von Packagist verwendet werden kann.

Inzwischen bietet Laravel "Bundles" an, mit denen wir den Code für zukünftige Projekte modularisieren können.  Das Bundle-Verzeichnis enthält zahlreiche hervorragende Skripts und Pakete, die Sie in Ihren Anwendungen verwenden können. In dieser Lektion zeige ich Ihnen, wie Sie eines von Grund auf neu erstellen können!


Warten Sie, was ist ein Bundle?

Bundles bieten eine einfache Möglichkeit, zugehörigen Code zu gruppieren. Wenn Sie mit CodeIgniter vertraut sind, sind Bundles "Sparks" sehr ähnlich. Dies ist offensichtlich, wenn Sie sich die Ordnerstruktur ansehen.

Folder Structure

Das Erstellen eines Bundles ist ziemlich einfach. Um den Prozess zu veranschaulichen, erstellen wir eine Boilerplatte für das Admin-Panel, die wir in zukünftigen Projekten verwenden können.  Zuerst müssen wir ein 'admin'-Verzeichnis in unserem' Bundles'-Ordner erstellen. Versuchen Sie, die Ordnerstruktur aus dem obigen Bild zu replizieren.

Bevor wir etwas zu unserem Bundle hinzufügen, müssen wir es zuerst bei Laravel registrieren. Dies geschieht in der Datei bundles.php Ihrer Anwendung.  Wenn Sie diese Datei öffnen, sollte ein Array zurückgegeben werden. Wir müssen lediglich unser Bundle hinzufügen und einen handle definieren. Dies wird die URI, mit der wir auf unser Admin-Panel zugreifen.

Hier habe ich meinen Namen "admin" genannt, aber Sie können Ihre gerne anrufen, wie Sie möchten.

Sobald wir dieses Setup haben, müssen wir eine start.php-Datei erstellen. Hier werden wir einige Dinge einrichten, wie zum Beispiel unsere Namespaces. Wenn Sie sich nicht damit beschäftigen, benötigen Sie nicht wirklich eine Startdatei, damit Ihr Bundle wie erwartet funktioniert.

Mit der Autoloader-Klasse von Laravel können wir ein paar Dinge tun: Karten unseres Basiscontrollers und Autoload-Namespaces.

Durch den Namensraum wird sichergestellt, dass wir keinen Konflikt mit anderen Modellen oder Bibliotheken verursachen, die bereits in unserer Anwendung enthalten sind. Sie werden feststellen, dass wir uns nicht dafür entschieden haben, unsere Controller nicht mit einem Namespace zu versehen, um die Sache etwas zu vereinfachen.


Veröffentlichen von Assets

Für das Admin-Panel nutzen wir Twitter's Bootstrap, also schnappen Sie sich eine Kopie. Wir können dies in einem public Ordner in unserem Paket ablegen, um ihn später in unserer Anwendung veröffentlichen zu können.

Wenn Sie bereit sind, sie zu veröffentlichen, führen Sie einfach den folgenden Befehl durch den Handwerker aus.

Dadurch werden die Ordnerstruktur und die Dateien in das Ordner-bundles in unserem public Ordner im Stammverzeichnis der Laravel-Installation kopiert. Wir können dies dann im Basiscontroller unseres Bundles verwenden.


Einrichten des Base Controllers

Es ist immer eine clevere Idee, einen Basis-Controller einzurichten und von dort aus zu erweitern. Hier können wir restful Controller einrichten, das Layout definieren und alle Assets einschließen. Wir müssen diese Datei nur base.php aufrufen und in das Verzeichnis unseres Controllers einfügen.

Lassen Sie uns erstens etwas Hauswirtschaft aus dem Weg schaffen. Wir werden natürlich Laraves restful Controller verwenden wollen.

Und wir geben ein Layout an, das wir in Kürze erstellen werden. Wenn Sie mit Controller-Layouts nicht vertraut sind, werden Sie sich auf etwas freuen.

Der Name des Bündels, gefolgt von zwei Doppelpunkten, ist ein Paradigma in Laravel, von dem wir in der Zukunft mehr sehen werden.

Beim Umgang mit Assets innerhalb unseres Bundles können wir wie erwartet vorgehen und den Pfad vom Stammverzeichnis des Öffentlichen Ordners angeben.  Zum Glück ist Laravel da, um uns das Leben leichter zu machen. In unserem Konstrukt müssen wir das Bündel angeben, bevor Sie unsere Asset-Container hinzufügen.

Machen Sie sich keine Sorgen, wenn Sie mit Asset-Containern nicht vertraut sind. Es sind lediglich Abschnitte einer Seite, auf denen Sie Ihre Assets unterbringen möchten. Hier werden Stylesheets in die Kopfzeile und Scripts in die Fußzeile eingefügt.

Jetzt können wir unsere Bootstrap-Stile und -Skripte problemlos einbinden. Unser fertiger Basiscontroller sollte ähnlich aussehen:

Wir haben auch die Catch-All-Anforderung vom Basis-Controller der Anwendung übermittelt, um eine 404-Antwort zurückzugeben, falls eine Seite nicht gefunden wird.

Bevor wir etwas anderes tun, erstellen wir die Datei für dieses Layout (views/layout/main.blade.php), damit später keine Fehler auftreten.


Das Bündel sichern

Beim Aufbau eines Admin-Panels wollen wir die Leute fernhalten. Glücklicherweise können wir die eingebaute Auth-Klasse von Laravel verwenden, um dies mit Leichtigkeit zu erreichen.

Zuerst müssen wir unsere Tabelle erstellen. Ich benutze 'Admins' als meinen Tabellennamen, aber Sie können es ändern, wenn Sie möchten. Artisan erstellt eine Migration und legt sie im Migrationsverzeichnis unseres Bundles ab. Führen Sie einfach die folgenden Anweisungen in der Befehlszeile aus.

Das Schema erstellen

Wenn Sie mit dem Schema-Builder nicht vertraut sind, empfehle ich Ihnen, einen Blick in die Dokumentation zu werfen. Wir werden ein paar Spalten hinzufügen:

  • id - Dies Funktion wird automatisch erhöht und wird unser Primärschlüssel
  • Name
  • Nutzername
  • Passwort
  • Email
  • Rolle - Wir werden das heute nicht nutzen, aber Sie können das Paket später erweitern

Wir geben auch die Standardzeitstempel an, um Best Practices zu befolgen.

Nachdem wir nun unsere Datenbankstruktur eingerichtet haben, müssen wir ein zugehöriges Modell für die Tabelle erstellen. Dieser Prozess ist im Wesentlichen identisch mit der Vorgehensweise in unserer Hauptanwendung.  Wir erstellen die Datei und das Modell basierend auf der einzigen Form unseres Tabellennamens - wir müssen jedoch sicherstellen, dass der Namespace korrekt ist.

Oben haben wir sichergestellt, dass wir den in start.php definierten Namespace verwenden. Damit wir Eloquent korrekt referenzieren können, erstellen wir einen Alias.

Auth erweitern

Um unser Paket vollständig in sich geschlossen zu halten, müssen wir auth erweitern. Auf diese Weise können wir eine Tabelle definieren, um sich nur bei unserem Admin-Panel anzumelden und die Hauptanwendung nicht zu beeinträchtigen.

Bevor wir unseren benutzerdefinierten Treiber erstellen, erstellen wir eine Konfigurationsdatei, in der Sie auswählen können, ob Sie username oder die E-Mail-Spalten aus der Datenbanktabelle verwenden möchten.

Wenn Sie die von uns verwendeten Spalten ändern möchten, passen Sie die Werte hier einfach an.

Als nächstes müssen wir den Treiber erstellen. Nennen wir es "AdminAuth" und fügen Sie es in unseren Bibliotheksordner ein. Da wir Auth erweitern, müssen wir nur ein paar Methoden überschreiben, damit alles wie gewünscht funktioniert.

Nachdem wir Driver erstellt haben, müssen wir Laravel in Kenntnis setzen. In start.php können Sie dazu die Auth-Methode extend verwenden.

Als letztes müssen wir Auth so konfigurieren, dass es zur Laufzeit verwendet wird. Wir können dies im Konstruktor unseres Basiscontrollers mit folgendem tun.


Routen und Controller

Bevor wir zu irgendetwas routen können, müssen wir einen Controller erstellen. Lassen Sie uns unseren Dashboard-Controller erstellen, den wir nach dem Einloggen sehen werden.

Da wir möchten, dass dies in der Wurzel unseres Bundles (d. H. Dem zuvor definierten Handle) angezeigt wird, müssen wir diese home.php aufrufen. Laravel verwendet das Schlüsselwort "home", um festzulegen, was Sie im Stammverzeichnis Ihrer Anwendung oder Ihres Bundles anzeigen möchten.

Erweitern Sie Ihren Basiscontroller und erstellen Sie eine Indexansicht. Für den Moment kehren Sie einfach 'Hello World' zurück, um sicherzustellen, dass alles in Ordnung ist.

Jetzt, da unser Controller eingerichtet ist, können wir dorthin routen. Erstellen Sie routes.php innerhalb Ihres Bundles, falls Sie dies noch nicht getan haben. Ähnlich wie bei unserer Hauptanwendung kann jedes Bundle eine eigene Routendatei haben, die identisch funktioniert.

Hier habe ich den Home Controller registriert, den Laravel / automatisch zuordnen wird. Später fügen wir unseren Login-Controller zum Array hinzu.

Wenn Sie in Ihrem Browser zu /admin (oder zu einem beliebigen zuvor definierten Handle) gehen, sollten Sie "Hello World" sehen.


Erstellen des Anmeldeformulars

Erstellen wir jedoch den Login-Controller, anstatt den Basiscontroller zu erweitern, sondern den Hauptcontroller von Laravel. Der Grund für diese Entscheidung wird in Kürze ersichtlich.

Da wir nicht weiter gehen, müssen wir vor dem Start ein paar Dinge festlegen - nämlich erholsame Layouts, den richtigen Auth-Treiber und unsere Assets.

Lassen Sie uns auch unsere Sichtweise schaffen. Wir werden Blade - Laraves Template-Engine - verwenden, um die Sache etwas zu beschleunigen. Erstellen Sie in Ihrem Bundles-Ansichtsverzeichnis ein 'login'-Verzeichnis und eine' index.blade.php'-Datei.

Wir werden eine Standard-HTML-Seitenstruktur aufrufen und die Assets wiederholen.

Stellen wir nun sicher, dass die Ansicht im Controller erstellt wird. Da wir restful Controller verwenden, können wir das Verb 'get' in unserer Methode nutzen.

Genial! Wir können jetzt mit dem Erstellen unseres Formulars beginnen, das wir mit Form klasse erstellen können.

Login Form

Oben haben wir ein Formular erstellt, das sich selbst posten wird (genau das, was wir wollen), zusammen mit verschiedenen Formularelementen und Bezeichnungen, die dazu passen. Der nächste Schritt ist die Bearbeitung des Formulars.

Da wir das Formular an sich selbst senden und Restful-Controller verwenden, müssen Sie nur die post_index -Methode erstellen und diese verwenden, um unser Login zu verarbeiten. Wenn Sie Auth noch nie verwendet haben, werfen Sie einen Blick in die Dokumentation, bevor Sie weiter gehen.

Wenn die Anmeldeinformationen korrekt sind, wird der Benutzer zum Dashboard weitergeleitet. Andernfalls werden sie mit einem Fehler zurückgeleitet, den wir in der Anmeldeansicht überprüfen können.  Da dies nur Sitzungsdaten und keine Validierungsfehler sind, müssen wir nur eine einfache Überprüfung implementieren.

Wir müssen auch Benutzer abmelden. Erstellen wir also eine get_logout-Methode und fügen Sie Folgendes hinzu. Dadurch werden Benutzer abgemeldet und beim Besuch von /admin/login/logout umgeleitet.

Das letzte, was wir machen müssen, ist den Login-Controller zu unserer Routes-Datei hinzuzufügen.

Routen filtern

Um zu verhindern, dass Personen unseren Anmeldebildschirm umgehen, müssen wir unsere Routen filtern, um festzustellen, ob sie autorisierte Benutzer sind. Wir können den Filter in unserer routes.php erstellen und ihn an unseren Basiscontroller anhängen, um zu filtern, bevor die Route angezeigt wird.

Zu diesem Zeitpunkt müssen Sie dies nur noch im Konstruktor unseres Basiscontrollers aufrufen. Wenn wir unseren Login-Controller von unserer Basis aus erweitern würden, hätten wir eine Endlosschleife, die schließlich ausfallen würde.


Ansichten einrichten

Zuvor haben wir unser main.blade.php-Layout erstellt. Jetzt werden wir etwas damit anfangen. Lassen Sie uns eine HTML-Seite bekommen und unsere Assets einbringen.

Sie werden feststellen, dass ich auch einige Variablen herausgegriffen habe: $title und $content. Wir können magische Methoden von unserem Controller verwenden, um Daten an diese weiterzuleiten.  Ich habe auch $content in den Container div gepackt, für den Bootstrap das Styling bereitstellt.

Als Nächstes erstellen wir die Ansicht für unser Dashboard. Da wir dies verschachteln, müssen wir nur den Inhalt, den wir in unseren Container legen möchten, ablegen.

Speichern Sie dies als index.blade.php im Verzeichnis views/dashboard innerhalb Ihres Bundles.

Nun müssen wir unseren Controller so einstellen, dass er das gerade erstellte Layout und die angezeigten Dateien nutzt. Fügen Sie in der zuvor erstellten Methode get_index Folgendes hinzu.

title ist eine magische Methode, die wir als Variable in unserem Layout ausdrücken können. Durch die Verwendung nest können wir eine Ansicht direkt von unserem Controller aus in das Layout einfügen.


Erstellen einer Aufgabe 

Zur Beschleunigung bietet Laravel eine einfache Möglichkeit, Code von der Befehlszeile aus auszuführen. Diese werden "Aufgaben" genannt. Es ist eine gute Idee, einen Benutzer anzulegen, um auf einfache Weise einen neuen Benutzer zur Datenbank hinzuzufügen.

Wir müssen lediglich sicherstellen, dass die Datei den Namen unserer Aufgabe annimmt, und sie in das Aufgabenverzeichnis des Bundles einfügen. Ich werde diese setup.php nennen, da wir sie gleich nach der Installation des Bundles verwenden werden.

Laravel durchläuft eine Reihe von Argumenten. Wir können dies zählen, um sicherzustellen, dass wir genau das bekommen, was wir wollen.Wenn nicht, wird ein Fehler ausgegeben. Sie werden auch feststellen, dass wir die Command-Klasse verwenden, um bundle:publish auszuführen. Auf diese Weise können Sie alle Befehlszeilenaufgaben ausführen, die in Laravel in Ihrer Anwendung oder Ihrem Bundle integriert sind.

Die wichtigste Aufgabe dieser Aufgabe ist es, die Argumente zu übernehmen, das Kennwort zu übergeben und einen neuen Administrator in die Admins-Tabelle einzufügen. Um dies auszuführen, müssen wir Folgendes in der Befehlszeile verwenden.


Was ist jetzt?

In diesem Lernprogramm haben wir ein Boilerplate Admin Panel erstellt, das einfach zu erweitern ist. In der von Ihnen erstellten roles können Sie vielleicht einschränken, was Ihre Kunden sehen können.

Ein Bundle kann alles von einem Admin-Panel, wie wir es heute gebaut haben, bis hin zu Markdown-Parsern - oder sogar dem gesamten Zend Framework (ich mache keine Witze). Alles, was wir hier besprochen haben, wird Sie auf den Weg bringen, um tolle Laravel-Bundles zu schreiben, die im Laravel-Bundle-Verzeichnis veröffentlicht werden können.

Weitere Informationen zum Erstellen von Laravel-Paketen finden Sie auf Nettuts +.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.