Laravel punto de ruta único para diferentes controladores según babosas

Soy nuevo en laravel y he buscado mucho para encontrar una respuesta a mi problema, pero o no es aplicable o no lo estoy obteniendo.

Tengo una solución de FileMaker para un cliente que maneja clientes y eventos. Cada cliente de mi cliente tiene sus propios sitios web de eventos que se administran a través de la solución. A cms simplemente. Cada cliente obtiene un sitio con una url como clientsite.com/event.

Cada página del evento tiene un tipo de página y me gustaría abordar diferentes controladores según el tipo.

En routes.php tengo:

Route::group(['middleware' => ['sal', 'menu']], function () { Route::get('/{event}/{page}', function($event, $page) { // Query page for page-type and use controller depending on type }); }); 

Hay muchos tipos de página (texto / imagen estándar, formularios especializados, etc.) y por eso me gustaría abordar diferentes controladores.

Los nombres de los eventos son siempre únicos, pero las páginas no.

Puede llamar un controlador manualmente dentro del cierre de la ruta. Aunque sugeriría hacer la validación en un archivo auxiliar para hacer el archivo de ruta limpio y legible.

 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()); } }); }); 

Una alternativa a la solución de ruta podría ser manejar la lógica en el controlador mismo:

Primero, actualice routes.php a algo como:

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

Luego, en el archivo RoutesController.php (agregar a la app/Http/Controllers ), puede hacer algo similar a:

 public function index() { $event = Request::segment(1); // get the {event} part of the route $page = Request::segment(2); // get the {page} part of the route // get event data from database, eg $event_data = Event::where( 'slug', $event )->first(); // load correct page switch ( $page ) { case "people": return $this->people(); break; case "anotherPage": return $this->another_page(); break; } } private function people() { // show view return View::make('event.people'); } 

Esta solución mantiene limpio su archivo de rutas, pero también le permite manejar los diferentes datos de eventos y páginas, y cargar diferentes vistas dependiendo de la página que se esté mirando. Su lógica extra sería mejor en un controlador que en el archivo de rutas.

Todo depende de dónde prefiera codificar su página / lógica de visualización. Puede usar estas funciones de llamada de aproximación en el mismo controlador o en las externas.

    Intereting Posts