2017-05-08 6 views
1

私はこれを行う最良の方法はわかりませんが、基本的にいくつかのルートといくつかのベンダーも設定していますが、ベンダー "/フォーラム"を使用することができます。laravel最後のオプションとしてすべてのルートをキャッチ

Route::get('/', function() { return view('welcome'); }); 
Route::get('/contact', function() { return view('contact'); }); 
Route::get('/login', function() { return view('login'); }); 
Route::get('/signup', '[email protected]'); 
Route::get('/logout', '[email protected]'); 
Route::get('/{slug}', '[email protected]'); 

あなたは最後のルートは基本的にはスラグを取得した後、コントローラに、私はスラグでページを返す見ることができます:ここで

は私のルートです。問題は/フォーラムで、 [email protected]が呼び出されているので、Laravelはベンダーの前にこのルートファイルを見ていると仮定しています。それを設定するより良い方法はありますか? Route::get('/{slug}', '[email protected]');はベンダールートの後で最後のオプションとして呼び出されますか?

答えて

0

Laravelのルートはそれらが/{slug}前に、あなたの/forum試合を持っている唯一の方法は、ルートが最初にロードされていることを確認することですので、定義された順序でロードされています。

public function map() 
{ 
    $this->mapApiRoutes(); 
    $this->mapWebRoutes(); 

    Route::get('/{slug}', 'App\Http\Controllers\[email protected]'); 
} 
+0

ありがとう:それは私は次のようになりapp/Providers/RouteServiceProvider.phpにロードされている他のすべてのルートの後にそれを追加することを示唆している最後にロードされている保証します。私が 'app/Providers/RouteServiceProvider.php'フォーラムに入れても、間違ったコントローラを使用しようとします。 '/ forum'ルートはベンダーパッケージによって処理されるので、' Route :: get( '/ {slug}'、 'App \ Http \ Controllers \ PageController @ show')をロードする必要があります。 } 'ベンダールートの後にも同様に – Packy

+0

ohhh、そのベンダーのサービスプロバイダーを' App \ Providers \ RouteServiceProvider :: class 'の前に 'config/app.php'の' providers'配列に置き、最初にそのルートをロードする必要がありますあなたのルートの前に。 –

関連する問題