2017-10-18 4 views
0

私はLaravelをかなり新しくしています。ルーティングに関する問題が発生しています。変数が指定されていない限り、Laravelルートはプレフィックス内で動作しません

Route::group(['prefix'=>'api/v1'],function(){ 
    Route::resource('results','RequestController'); 
    Route::get('results/getByName/{name}','[email protected]'); 
    Route::get('results/getLastTen','[email protected]'); 
}); 

接頭辞api/v1の下の最後のルートが機能しないという問題があります。私はそれを何も表示せず、何の誤りもないと言います。

requestControllerのコードは次のとおりです。私は接頭辞「API/V1」のような外のroutes.phpファイルからそれを呼び出したときにそれが動作するので

public function getLastTen(){ 
     $results=DB::table('latest_random_trends')->limit(10)->get(); 
     return $results; 
    } 

すべては、コントローラ上のコードで大丈夫ですこの:

Route::get('results/getLastTen','[email protected]'); 

が、それは、プレフィックス内にあるとき、私はこのようにそれに変数を追加しない限り、それは動作しません:

Route::get('results/getLastTen/{var}','[email protected]'); 
+0

あなたは '/ api/v1/results/getLastTen'のURLに行きますか? – drmonkeyninja

+0

はい、URLに問題はありません。私はそれを呼び出すとき何も表示されません。しかし、私はapi/v2のような別のプレフィックスの下にルートを置くとうまく動作します –

+0

あなたはリソースルートを削除するとどうなりますか?それは動作しますか?もしそうなら、あなたはリソースルートとあなたのカスタムルートとの間に矛盾があるかもしれないと思います。 – Camilo

答えて

2

あなたはその上にRoute::resourceがあるので、私は、リソースコントローラのshowメソッドがあなたが書いたものの代わりにルートを取得しているということが起こっていると思います。

1以下を試してください:あなたは

Route::resource('results','RequestController', ['except' => 'show']); 
  • それを使用するつもりはない場合

    • は、showメソッドを除外するリソースルート

      Route::group(['prefix'=>'api/v1'],function(){ 
          Route::get('results/getLastTen','[email protected]'); 
          Route::resource('results','RequestController');  
          Route::get('results/getByName/{name}', '[email protected]'); 
      
      }); 
      
    • 上のカスタムルートを移動し

    さらに詳しい情報は、のアクションを参照してください。Laravel Docs

  • +0

    私は同じ考えをしていましたが、最後に定義されたルートは、競合が発生した場合に以前のルートを上書きしませんか? – Camilo

    +1

    @Camiloいいえ、一致する最初のルートは最初に実行されます – Lloople

    +0

    ルートの最後に '{var} 'を追加するのは' getByName/{var} 'と同じ理由ですリソースルートそれはパターンがもはやリソースコントローラのデフォルトの 'show'アクションと一致しないためです。 – Lloople

    関連する問題