Dynamisches Routing in Laravel 5 Anwendung

Ich hoffe, dass mir jemand helfen kann mit dynamischen routing von urls, die über mehrere Segmente. Ich habe getan, einige suchen alle über das Internet, aber nichts, finde ich hilft mir mit meiner spezifischen situation.

Ein wenig hintergrund ... vor einigen Jahren, entwickelte ich ein CMS-Paket für den benutzerdefinierten client-websites, die erstellt wurde, auf CodeIgniter. Dieses CMS-Paket hat mehrere Module (Seiten, Blog, Kalender, Anfragen, etc). Für das Seiten-Modul, ich war Zwischenspeicherung der Routen "Routen" config-Datei, die im Zusammenhang der vollständige route für die Seite (einschließlich der Elternteil, Großeltern, etc.) mit der ID der Seite. Ich Tat dies so, dass ich nicht zu tun haben, eine Datenbank-lookup zu finden, der die Seite angezeigt werden soll.

Ich arbeite derzeit auf den Wiederaufbau dieses CMS-Paket mit Laravel (5.1) [während ich Lerne Laravel]. Ich brauche, um herauszufinden, die routing-situation, bevor ich mich bewegen kann, mit meiner Seiten-Modul in die neue version des Pakets.

Ich weiß, dass ich etwas tun kann, wie ...

//routes.php
Route::get('{slug}', ['uses' => 'PageController@view']);

//PageController.php
class PageController extends Controller
{
    public function view($slug)
    {
        //do a query to get the page by the slug
        //display the view
    }
}

Und dies funktionieren würde, wenn ich nicht zulassen, dass verschachtelte Seiten, aber ich Tue. Und ich nur die Eindeutigkeit der slug auf der Grundlage der übergeordneten. So könnte es mehr als eine Seite mit einem Schluck fargo ...

  • Standorte/fargo
  • Mitarbeiter/fargo

Als das Paket, das ich gebaut mit CodeIgniter, ich möchte in der Lage sein, um zu vermeiden, zusätzliche Datenbank-lookups zu finden, die richtige Seite angezeigt wird.

Mein Erster Gedanke war die Erstellung einer config-Datei, hätte das dynamische Routen, wie ich mit der alten version des Systems. Die Strecken wird sich erst ändern, zu bestimmten Zeiten (wenn die Seite erstellt wird, wenn slug geändert wird, wenn die übergeordnete geändert wird), also "Zwischenspeichern" Sie wäre eine tolle Sache. Aber ich bin noch neu in Laravel, so bin ich nicht sicher, was der beste Weg wäre dies.

Ich habe es geschafft, herauszufinden,, dass die folgenden Strecken arbeiten. Aber ist dies der beste Weg, um dies einzurichten?

Route::get('about/foobar', function(){
    return App::make('\App\Http\Controllers\PageController')->callAction('view', [123]);
});

Route::get('foobar', function(){
    return App::make('\App\Http\Controllers\PageController')->callAction('view', [345]);
});

Grundsätzlich würde ich gerne binden, eine bestimmte route zu einer bestimmten Seiten-ID wenn die Seite erstellt wird (oder wenn die Schnecke oder die Eltern werden verändert).

Bin ich nur overcomplicating Dinge?

Jede Hilfe oder Richtung, zu diesem würde sehr geschätzt werden.

Dank!

Am I just overcomplicating things?, IMO Yes. Auch diese Strecken sieht aus wie statisch, es gibt keine Dynamik, wenn Sie nicht zulassen, dass alle Platzhalter für IDs. Jede route ist nur gebunden an einen spezifischen id.
Wie Plane ich die Dinge so einzurichten, ich glaube nicht, dass es irgendeinen Weg gibt, auf die Verwendung einer dynamischen route, die würde nicht von mir verlangen, zusätzliche Datenbank-Abfragen, die gerade zu finden, die richtige Seite. Ich verwende dynamische Routen für andere Module, wie das Blog, aber für den regulären Seiten, ich glaube nicht, dass es funktionieren wird.

InformationsquelleAutor Becky | 2015-10-07

Schreibe einen Kommentar