2017-03-24 13 views
1

コントローラの同じアクションに2つの異なるルートを追加しようとしていますが、途中でnull値を指定する必要があります。laravel routes:変数の順序を変更する

経路:

Route::get('post/get-ajax-posts/start/{start}/profile/{profileid}', '[email protected]');  
Route::get('post/get-ajax-posts/start/{start}/tag/{tagName}', '[email protected]'); 

はコントローラ:

public function getAjaxPosts(Request $request, $startRow, $profile = null, $tagName = null){} 

Iは、第2の経路にヌル$プロファイル=を提供したいと思いますが、私は= {tagNameを}

どのように$プロファイルを取得私がする?

私が発見した唯一のことは、コントローラに追加することです:

 $routeParameters = $this->getRouter()->getCurrentRoute()->parameters(); 
     if(isset($routeParameters['tagName']) && $routeParameters['tagName']){ 
      $tagName = $routeParameters['tagName']; 
      $profile = null; 
     } 

はどんな簡単な方法はありますか?

+1

を得る 'ユーザー/ {名}?'' –

+1

私見彼らは2つの異なる関数呼び出しと2つの異なるルートのようです。ロジックが同じ場合は、paramsを取得して他の関数を呼び出す関数を持つことができます。私はオプションのparamsはあなたがそれらを書いたときにルートに適用可能な解決策だとは思わない。 – dparoli

+0

あなたはあなたの後ろのものを達成するためのきれいな方法があるので、あなたの全体のコントローラメソッドを投稿できますか?また、同じルートを使用する*つまり、既存のコードに追加していますか? –

答えて

0

その非常にシンプルな仲間

パブリック関数の内部あなたは `使用することができますか?`オプションのパラメータのために、 `のようにすべてのあなたのルート変数

public function getAjaxPosts(Request $request){ 
$startRow = $request['startRow']; 
$profile = null ; 
$tagName = null ; 
} 
+0

これはPOSTメソッドのために動作します。GETのためには、 '$ routeParameters = $ this-> getRouter() - > getCurrentRoute() - > parameters();' –

関連する問題