2016-05-02 22 views
3

Probleme:Laravel 5.2 verschachtelte Route Gruppen mit Middleware

  1. Session :: Flash wird nicht funktionieren
  2. Sonderbare Routenparameter

Problem 1

ich erlebt habe ein Fehler, bei dem Session :: Flash nicht funktioniert. Ich habe auch einen Workaround gefunden, aber es ist ... komisch.

Ich denke, es ist etwas falsch mit verschachtelten Gruppen und Middlewares.

Code:

Route::group(['middleware' => 'web'], function() { 
    Route::group([ 
      'prefix' => '{locale}', 
      'middleware' => ['localized'] 
     ], function($locale) 
    { 
     Route::resource('/', 'ProductController', ['only' => ['index']]); 
     Route::get('/cart', '[email protected]')->name('show-shopping-cart'); 
    }); 

    Route::patch('/cart', '[email protected]')->name('patch-cart'); 
}); 

jetzt .. dies funktionieren wird, wenn ich diese Art und Weise ändern kernel.php:

von

protected $middleware = [ 
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 
]; 

protected $middlewareGroups = [ 
    'web' => [ 
     \App\Http\Middleware\EncryptCookies::class, 
     \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
     \Illuminate\Session\Middleware\StartSession::class, 
     \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
     \App\Http\Middleware\VerifyCsrfToken::class, 
    ], 

    'api' => [ 
     'throttle:60,1', 
    ], 
]; 

zu

protected $middleware = [ 
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 
    \App\Http\Middleware\EncryptCookies::class, 
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
    \Illuminate\Session\Middleware\StartSession::class, 
    \Illuminate\View\Middleware\ShareErrorsFromSession::class, 
    \App\Http\Middleware\VerifyCsrfToken::class, 
]; 

protected $middlewareGroups = [ 
    'web' => [ 
    ], 

    'api' => [ 
     'throttle:60,1', 
    ], 
]; 

was machst du Denk darüber nach?

Problem 2

In den Routen oben wird Product @ Show 2 Parameter bekommen: locale und id.

Zum Beispiel, wenn ich navigieren Sie zu/en/4

function show($id){ 
    dd($id); 
} 

$ id = "en"

es so funktionieren würde:

function show($locale, $id){ 
    dd($id); 
} 

ist dies durch Design? Wenn ja, gibt es eine Möglichkeit zu vermeiden, dass das Gebietsschema $ an Routen innerhalb der Gruppe weitergegeben wird?

Antwort

Verwandte Themen