2016-03-24 3 views
0

Ich bin neu in Laravel und ich habe viel nach einer Antwort auf mein Problem gesucht, aber entweder ist es nicht anwendbar oder ich bekomme es nicht.Laravel Einzelroute Punkt zu verschiedenen Controller abhängig von Schnecken

Ich habe eine FileMaker-Lösung für einen Kunden, der Kunden und Ereignisse behandelt. Jeder Kunde hat eigene Event-Websites, die über die Lösung verwaltet werden. Ein cms einfach. Jeder Kunde erhält eine Website mit einer URL wie clientsite.com/event.

Jede Seite des Ereignisses hat einen Seitentyp und ich möchte je nach Typ verschiedene Controller adressieren. i

In routes.php haben:

Route::group(['middleware' => ['sal', 'menu']], function() { 

    Route::get('/{event}/{page}', function($event, $page) { 
     // Query page for page-type and use controller depending on type 
    }); 
}); 

Es gibt viele Seitentypen (Standard Text/Bild, spezielle Formen usw.) und dafür möchte ich verschiedene Controller anzusprechen.

Ereignisnamen sind immer eindeutig, Seiten jedoch nicht.

+0

Ich habe einen Vorschlag für eine Antwort, wenn es noch nicht gelöst ist –

+0

Ich würde es gerne hören – McAn

+0

kann er nicht nur validieren, was hes Validierung in diesem Block dann einen Controller manuell aufrufen? – Gokigooooks

Antwort

0

Sie könnten einen Controller manuell innerhalb der Route Closure aufrufen. Allerdings würde ich vorschlagen, die Validierung in einer Hilfsdatei durchzuführen, um die Routendatei sauber und lesbar zu machen.

Route::group(['middleware' => ['sal', 'menu']], function() { 

    Route::get('/{event}/{page}', function($event, $page) { 
     // you could do something like 
     $user_type = Auth::user()->user_type; 
     if($user_type == "organizer") 
     { 

      $controller = $app->make('OrganizerController'); 
      return $controller->callAction('controllerFunc', $parameters = array());   
     } 
     else 
     { 
      $controller = $app->make('ClientController'); 
      return $controller->callAction('controllerFunc', $parameters = array());   
     }   

    }); 
}); 
+0

Ich hatte keinen Zugriff auf "Auth :: user()" als die Routen in RouteServiceProvider erstellt wurden – Carlton

0

Eine Alternative zur Route Lösung könnte sein, die Logik in der Steuerung selbst zu handhaben:

Zuerst aktualisieren routes.php zu so etwas wie:

Route::group(['middleware' => ['sal', 'menu']], function() { 
    Route::get('/{event}/{page}', '[email protected]'); 
}); 

Dann wird in den RoutesController.php Datei (hinzufügen zu app/Http/Controllers), können Sie etwas Ähnliches wie tun:

Diese Lösung hält Ihre routes-Datei sauber, ermöglicht Ihnen aber auch die Verarbeitung der verschiedenen Ereignis- und Seitendaten und das Laden verschiedener Ansichten abhängig von der betrachteten Seite. Ihre zusätzliche Logik wäre besser in einem Controller als in der Routes-Datei.

Es hängt alles davon ab, wo Sie Ihre Seiten-/Ansichtslogik bevorzugen. Sie können diese Approach-Funktionen im selben oder externen Controller verwenden.

+0

Kein schlechter Ansatz, denke ich, aber ich mag den Gedanken, die Routenlogik zu behalten (es sei denn, es ist zu unordentlich)) in routen.php. – McAn

Verwandte Themen