Wie laravel 4 core erweitern?

7

Ich bin ein Newb Lern ​​Laravel 4. Ich möchte bestimmte Hilfsfunktionen überschreiben. Oder fügen Sie neue Funktionen zu Url, Str usw. hinzu. Wie geht das?

    
Shuvo 01.10.2013, 18:56
quelle

3 Antworten

20

Je nachdem, welchen Teil von Laravel Sie erweitern oder ersetzen möchten, gibt es unterschiedliche Ansätze.

Makros

Das Hinzufügen von Funktionen zu Str ist wirklich einfach, wegen "Makros":

Hier ist ein kurzes Beispiel für das Hinzufügen von Funktionen:

%Vor%

Sie können diese Funktion dann wie erwartet aufrufen:

%Vor%

Das Hinzufügen von Funktionen mit Makros wird von Str, Form, HTML und Response unterstützt.

IOC-basierte Erweiterung

Um die URL zu erweitern, muss man den IOC von Laravel verwenden. Dies wird in den Dokumenten erklärt (wie von BenjaminRH erwähnt). Ich stimme zu, es kann ein bisschen schwer zu verstehen sein. Hier ist eine Schritt-für-Schritt-Anleitung, um die URL zu erweitern:

  1. Erstellen Sie den Ordner app / lib , um Ihre Erweiterungsklassen zu speichern.

  2. Fügen Sie diesen Ordner zum automatischen Laden hinzu:

    Fügen Sie in app / start / global.php den lib-Pfad zum Klassenlader hinzu:

    %Vor%

    Fügen Sie dann den Pfad zu composer.json classmap hinzu:

    %Vor%
  3. Erstellen Sie den benutzerdefinierten UrlGenerator app / lib / CustomUrlGenerator.php :

    %Vor%
  4. Erstellen Sie einen Service Provider app / lib / CustomRoutingServiceProvider.php :

    %Vor%
  5. Registrieren Sie den Dienstanbieter unter app / config / app.php :

    Fügen Sie CustomRoutingServiceProvider dem Array providers hinzu. Zum Beispiel gleich nach dem Workbench-Provider:

    %Vor%
  6. Führen Sie composer dump-autoload aus dem Projektstammordner aus.

  7. Fertig. Verwenden Sie wie:

    %Vor%

HINWEIS Der Code wurde getestet, enthält jedoch möglicherweise Fehler.

    
Matteus Hemström 01.10.2013 20:23
quelle
1

Interessant, dass Sie das eigentlich erwähnen sollten. Ein vollständiger Dokumentationsabschnitt wurde erst vor kurzem hinzugefügt, was dies im Detail abdeckt. Es ist sehr klar und leicht zu verstehen. Wenn Sie Laravel überhaupt verwendet haben, überrascht es Sie vielleicht nicht einmal, dass Laravel tatsächlich eine extend -Methode für viele Kernkomponenten bereitstellt.

    
BenjaminRH 01.10.2013 19:01
quelle
1

Nach der Antwort von Fnatte machen die heutigen Versionen von Laravel eine zusätzliche Verarbeitung in der url -Bindung. Die Neudefinition der gesamten Bindung ist keine praktische Option mehr.

Hier ist, wie ich die URL Fassade erweitert habe.

Erstellen Sie zuerst Ihre Kindklasse mit diesem Muster:

%Vor%

Fügen Sie dies dann in einem ServiceProvider hinzu:

%Vor%

Der Punkt ist einfach, dass die ursprüngliche url -Bindung mindestens einmal ausgeführt werden sollte, bevor wir sie mit unseren eigenen überschreiben.

    
Gras Double 02.11.2014 01:01
quelle

Tags und Links