Laravel routes.php wird groß [closed]

Lesezeit: 5 Minuten

Benutzer-Avatar
Chris G.

Da Sie ständig mehr und mehr Routen zu Routes.php hinzufügen, wird es immer größer. Wie organisieren Sie sie?

Ich habe ein Verzeichnis /application/routes/ erstellt und dort Dateien hinzugefügt. Jede Datei ist nur eine Reihe von Routen. Dann habe ich in routes.php den folgenden Code hinzugefügt, um sie alle einzuschließen:

// Dynamically include all files in the routes directory
foreach (new DirectoryIterator(__DIR__.DS.'routes') as $file)
{
    if (!$file->isDot() && !$file->isDir() && $file->getFilename() != '.gitignore')
    {
        require_once __DIR__.DS.'routes'.DS.$file->getFilename();
    }
}

  • Das finde ich die schönste Lösung. Aber glauben Sie, dass der Directory Iterator jedes Mal ausgeführt wird, wenn ein Benutzer versucht, auf die Website zuzugreifen? Wenn ja, kann ich mir vorstellen, dass dies zu Leistungsproblemen führen könnte?

    – RPDeshaies

    17. März 2014 um 20:00 Uhr

  • Dies ist eine sehr elegante Lösung. @ Tareck117, es ist möglich, dass dies die Leistung beeinträchtigen könnte, jedoch nicht so sehr, dass man sich sofort darauf konzentrieren müsste (obwohl es sich um niedrig hängende Früchte handelt).

    – Tim Groeneveld

    3. Mai 2014 um 15:40 Uhr

  • Ich stimme zu, dass dies zu einem Leistungsproblem führen könnte, aber es wäre sehr klein. Vor allem bei SSDs. Wenn Sie sich darüber Sorgen machen, können Sie die Dateiliste zwischenspeichern.

    – kaffee4u

    10. Juni 2014 um 22:19 Uhr

auch nach Übernahme aller Best Practices, wie in den anderen Antworten erwähnt, dh: Verwendung von Ressourcencontrollern, Routengruppen usw.

Sie können die Routendateien einfach auf die altmodische Weise ‘einschließen’. wie von Chris G in diesem Kommentar erwähnt.

Sie können eine einfache Verzeichnisstruktur erstellen und die Routendateien in die Datei route.php aufnehmen.

../myroutes
 --route-type-1.php
 --route-type-2.php 

In der Datei route.php

include('myroutes/route-type-1.php');

Daran ist nichts falsch. So sind Routen in den Paketen enthalten.

http://laravel.com/docs/packages#package-routing

  • Dies sollte als richtige Antwort markiert werden

    – Srneczek

    27. Mai 2016 um 13:50 Uhr

  • Manchmal vergesse ich, dass Laravel PHP ist und solche Dinge zulässt, und die Leute versuchen, die Dinge zu verkomplizieren und es auf die „Laravel-Art“ zu machen, obwohl es seit vielen, vielen Jahren eine gute alte PHP-Methode gibt. Darin schließe ich mich ein.

    – Alex McCabe

    15. August 2016 um 13:38 Uhr

Benutzer-Avatar
Haufen

Ich benutze normalerweise Gruppenrouten (weil Controller dazu neigen, die gleiche Art von Filterung zu haben, die benötigt wird, wenn sie verwandt sind), um sie zu organisieren, oder wenn Sie eine kleinere Routendatei haben möchten/können, die Sie vielleicht möchten Registrieren Sie Ihre Controller und führen Sie die zusätzlichen Validierungsprüfungen der URL-Parameter innerhalb des Controllers selbst durch.

  • Ich denke, der erste Vorschlag verkleinert die Datei nicht so sehr und der zweite würde die Routen einfach endgültig eliminieren. Es ist besser, andere Routendateien einzuschließen, wie von jemandem vorgeschlagen

    – Srneczek

    27. Mai 2016 um 13:53 Uhr

Benutzer-Avatar
Hexodus

Eigentlich sollten Router schlank bleiben. Verschieben Sie einfach Ihren Code auf Controller und verwenden Sie die Router, um sich zu registrieren und zu ihnen umzuleiten. Die Konvention besteht darin, einen Controller pro Datei zu speichern, damit Ihr Code automatisch organisiert wird.

Schau dir das an

//  application/controllers/sample.php
class Sample_Controller extends Base_Controller
{
    public function action_index()
    {
        echo "Wellcome to the root" //www.testapp.com/sample
    }

    public function action_edit()
    {
        echo "Some editing functions here." //www.testapp.com/sample/edit
    }

     public function action_whatsoever()
    {
        echo "Put here whatever you like." //www.testapp.com/sample/whatsoever
    }

}

Die Controller-Action-Route kann wie folgt registriert werden:

//application/routs.php
Route::controller('admin::home');

Sehr geradlinig und komfortabel.

Aktualisieren:

Sie können auch alle Ihre Controller mit dieser Zeile für die gesamte Anwendung automatisch registrieren:

Route::controller(Controller::detect());

Oder der Controller mit allen Aktionen:

Route::controller(Controller::detect('yourcontroller'));

Alternativ könnten Sie die Routen einfach in anderen Dateien speichern und diese Dateien dann mit include abrufen:

Route::group(stuff,function(){
  include __DIR__.DS.'routes1.php';
  include __DIR__.DS.'routes2.php';
});

Das gibt eine schöne und saubere Möglichkeit, das Handle zu sortieren, wenn viel zu viel Code vorhanden ist, was Sie auch nur erwähnen könnten

Route::controller(Controller::detect());

Und dann strukturieren Sie Ihre Controller entsprechend:

class Account_Controller extends Base_Controller {
  public function action_login() {
      //Login
  }

  public function action_logout() {
      ...
  }

Wenn Sie Parameter an eine Funktion übergeben müssen:

  public function dosomething($input){
     ...
  }

Sie können diese Funktionen wie folgt erreichen:

  http://yourapp/account/login
  http://yourapp/account/logout

Dann könnten Sie die Funktion einfach aufrufen, indem Sie die Parameter an die URL anhängen,

  http://yourapp.account/dosomething/somedata

Wenn einige Methoden geschützt werden müssen, hängen Sie sie ohne action_ an, damit die Öffentlichkeit nicht darauf zugreifen kann.

Alternativ könnten Sie zu restful-Methoden wechseln, was im Grunde eine Möglichkeit ist, auf einige Eingaben basierend auf der Art der erhaltenen Abfrage zu reagieren, z Anmeldebildschirm, wenn Sie eine “POST”-Anfrage erhalten, bedeutet dies normalerweise, dass der Benutzer Anmeldedaten postet und Sie entsprechend antworten können, was Ihnen hilft, die Anzahl der Funktionen zu reduzieren. Weitere Informationen zu erholsamen Methoden finden Sie in diesem brillanten Artikel von Ryan Tomayako an http://tomayko.com/writings/rest-to-my-wife

Um restful-Methoden zu verwenden, müssen Sie restful auf true setzen und dann das action-Schlüsselwort vor dem Namen der Funktion anhängen.

public $restful = true;
public function get_login() {
 return View::make('login');
 //This function is accessible using GET request to http://yourapp/login
}

public function post_login() {
   $data = Input::get();
   //do something using the Input data
   //This function is accessible using a POST request to http://yourapp/login
}

Auf diese Weise können Sie die Notwendigkeit einer weiteren Route zum Verarbeiten und Verifizieren der Anmeldeinformationen des Benutzers eliminieren!

und wenn Sie nicht möchten, dass auf bestimmte Methoden mit Restful-Methoden zugegriffen wird, fügen Sie einfach das Aktionsschlüsselwort (get, post, …) nicht in den Funktionsnamen ein.

Die Kombination von Restful-Methoden mit intelligentem Routing ist der effizienteste Weg, um Ihren Code sauber und sicher zu halten.

1094090cookie-checkLaravel routes.php wird groß [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy