2017-04-19 14 views
-1

2つのルートと2つのルートのみを使用したいGet(mp3、video、albumまたはアーティスト)ここでLaravel:54同じルートに1つのルートを使用

は私の試みである:(グループの "/")

Route::get("mp3s", "[email protected]"); 
    Route::get("mp3s/mp3/{slug}", "[email protected]"); 

    Route::get("videos", "[email protected]"); 
    Route::get("videos/video/{slug}", "[email protected]"); 

    Route::get("albums", "[email protected]"); 
    Route::get("albums/album/{slug}", "[email protected]"); 

    Route::get("artists", "[email protected]"); 
    Route::get("artists/artist/{slug}", "[email protected]"); 

私はforeachのをwrited、しかししている:

  1. 私はそれがeachpageで悪い習慣だと思います。

  2. 私はここに(mp3やアルバム、..)を取得カント:

foreach (pts as $pt) { 
    Route::get($pt.'s', '[email protected]'); 
    Route::get(("{$pt}s/$pt/{slug}"), "[email protected]"); 
    } 

答えて

1

あなたが同じコントローラを使用しているとして - 貧しい練習と考えられています - 、

Route::group("media", function() { 
    Route::get("{category}", "[email protected]"); 
    Route::get("{category}/{type}/{slug}", "[email protected]"); 
}); 

これらの変数を次のように指定することができます。

public function singlePost($category, $type, $slug) 
.... 

+0

はい、このコントローラで「ビデオ」を取得するにはどうすればよいですか? –

+0

チェックアウト私の答えの更新 – hassan

+0

は大丈夫です!しかし、このURLの 'localhost:8000/admin/post/new' 404では、(同じコントローラを使用しているので( –

0

あなたがにswitchステートメントを使用し、あなたが実装することができ、この方法では、メソッドのオーバーロードにより、同様にあなたのポストコントローラー

public function singlePost($category, $type = null, $slug = null) { 


} 

Route::get("{category}/{type?}/{slug?}", "[email protected]"); 

を単一の経路を使用することができますカテゴリのみが来た場合は結果を取得し、カテゴリとタイプがあればアーカイブを表示し、そのタイプのデータのリストを表示するe、3人すべてが単一の投稿を取得した場合。

関連する問題