2016-05-20 10 views
1

Ich möchte eine Route::group() einen bestimmten Namespace mit einer Closure anstelle der Laravel-Syntax verwenden. Also stattVerwenden Sie Controller-Namespace von Route Closure

Route::group(['namespace' => 'My\Namespace\For\Controllers'), function() { 

    // TestController found in `My\Namespace\For\Controllers` 
    Route::resource('resource/url', [email protected]) 
} 

frage ich mich, ob es möglich ist, etwas zu haben, wie

Route::group(function() { 

    // Some logic for using the `My\Namespace\For\Controllers` 
    // namespace for all routes within this group 

    // Controller found in `My\Namespace\For\Controllers` 
    Route::resource('resource/url', [email protected]) 
} 

ich diese Funktionalität wünschen, damit ich den Namen des Controllers-Raum dynamisch entscheiden kann, in Abhängigkeit von einem Parameter auf einen Weg geführt.

Antwort

2

Ich denke, der richtige Weg, um dies zu tun ist, Middleware zu erstellen, aber definitiv nicht route.php Datei.

https://laravel.com/docs/5.2/middleware

aktualisieren

Wenn Sie gerade brauchen Namespace in einer Gruppe für alle Regler einstellen, können Sie es wie folgt tun:

Route::group(['namespace' => 'My\Namespace\For\Controllers'], function() { 
    // Controllers within the "My\Namespace\For\Controllers" namespace 
}); 

https://laravel.com/docs/5.2/routing#route-group-namespaces

+0

Gute Idee Ich verwende bereits eine benutzerdefinierte Middleware in meinem Projekt. Möchten Sie näher erläutern, wie ein Controller-Namespace aus Middleware angegeben wird? – myol

+0

Also müssen Sie nur Namespace zu allen Controllern hinzufügen? Dann können Sie es einfacher mit der Standard-Laravel-Namespace-Gruppe machen. Bitte überprüfen Sie die aktualisierte Antwort. –

+1

Ich muss den Namespace abhängig von einem Parameter in der URL ändern. Ich kann den Parameter extrahieren und den Namespace im Closure aufbauen, ich weiß einfach nicht, wie ich diesen Namespace dann auf jeden Controller innerhalb dieser Gruppe anwenden soll – myol