2017-10-22 110 views
0

若干遊んで研究したところ、Route::when()Route::filter()はLaravel 5+で廃止されたようです。 membersで始まるすべてのURIを同じコントローラにルーティングできるようにする必要があります。例:Laravel 5.4 - ワイルドカードでルーティングする方法は?

Route::get('members/home', 'MembersController'); 
Route::get('members/view/all', 'MembersController'); 
Route::get('members/any/possible/route', 'MembersController'); 

メンバーから始まる可能性のあるすべてのルートは、自分のデータベースに格納されるため、わかりません。 5.4で使用できるLaravel 4.2と同等のワイルドカードがありますか?

アイデアは、特定のプレフィックスで始まるルートを指定されたコントローラに渡すことです。その後、コントローラはURI文字列全体を比較し、dbに一致するスラッグを持つページを取得します。

答えて

1

任意の値を許可するrouteパラメータを使用してこれを行うことができます。例えば。 (.*)。 1つのコントローラーアクションからのすべての要求を処理する必要があります。あなたの要求はすべてGET要求されることを知っていない場合、あなたは:anyメソッドタイプを使用することができ、さらにこれを取るために

Route::get('members/{action}', '[email protected]')->where('action', '(.*)); 

Route::any('members/{action}', '[email protected]')->where('action', '(.*)); 
+0

ブリリアント!これは私が必要とするものです。大変ありがとう! –

0
Route::get('/members/{section}', '[email protected]') 
     ->where(['section' => '.*']); 

いっそあなたはグループのルートを使用することができます。それは速く、あなたのアプリを最適化します。

Route::prefix('members')->group(function() { 
    Route::get('{section}', '[email protected]') 
     ->where(['section' => '.*']); 
}); 
関連する問題