2017-10-12 4 views
2

はのは、私は、ユーザーがこのような何かを探して取得する私のコントローラ内の機能を持っているとしましょう:パス機能の変数

Route::get('passengers', '[email protected](1)')->name('passengers'); 
Route::get('attendees', '[email protected](2)')->name('attendees'); 

という名前のルートがparameを定義する場合、彼らはすべての

答えて

0

んが、あなたはパラメータにアクション名を渡すことはできません、とロジックをルーティングあなたに問題があります:

Route::get('/{categoryName}', '[email protected]')->name('index'); 

そして、あなたがするコントローラでブレードで

public function index($categoryName) { 
    $category = Category::where('name', $categoryName)->first(); 
    // use $ category as you please ;) 
} 

route('index', ['categoryName' => $category->name]) 
0たとえば、次のように名前でカテゴリを取得
+0

されることは、あなたとokですか? – Maraboc

+0

実際には、example.com/passengers、example.com/attendeesのようにURLにアクセスして、インデックス(1)やインデックス(2)などに移動します。 –

+0

コントローラに2つのメソッドを作成するとどうなりますか? – Maraboc

0

同じ機能を使用することができます。この方法ルート関数の第2引数としてパラメータを渡すことができます。そして、あなたがルートに{category}を追加する必要が

route('passengers', ['category' => 1]) 

:指定されたパラメータは、自動的にこのようroute()ヘルパーを使用して、だから、彼らの正しい位置にURLに

https://laravel.com/docs/5.5/routing#named-routes

を挿入されます。また、ここではindex()の代わりにshow()を使用することをおすすめします。だから、あなたのルートは次のようになります。

Route::get('passengers/{category}', ['as' => 'passengers', 'uses' => '[email protected]']); 
0

はい、あなたはそのようなURLでのparamを定義することができますと衝突しないようにするために、あなたのルートファイルの最後に、このルートを追加することを忘れないでください

Route::get('passengers/{yourParam}', '[email protected]')->name('passengers'); 

View in docs

0
Route::get('{category}', [ 'as' => 'users', 'uses' => '[email protected]' ]); 

他のルート。

は、今すぐあなたのコントローラに

use Illuminate\Http\Request; 
public function index(Request $request) 
{ 
    $category = $request->query('category'); 
    // $category will be passengers, attendees, etc 
} 

あなたのルートはM.Moes @

/passengers can be accessed as route('users', ['category' => 'passengers']) 

/attendees can be accessed as `route('users', ['category' => 'attendees'])