2016-10-27 18 views
0

私は、あるサイトにブログと引用文句のある言葉リポジトリを持っています。 見積もりにはタグが付いており、そのエントリにもタグが付けられています。 私はこのrtconner/laravel-taggingパッケージを使用しています。未知数のタグの経路パターンを構築する方法 - Laravel&Conner/Taggable

ここで、記事と同じタグを共有するすべてのQuotationモデルを表示することです。

Article::withAnyTag(['Gardening','Cooking'])->get(); 

可能溶液

オプションルーティングパラメータ:オリジナルドキュメントを例を提供するように

雄弁構文は、単純です。 this questionでアスカー選んだ答えは解決策を提供します:

//in routes.php 
Route::get('/{book?}/{chapter?}/{topic?}/{article?}', '[email protected]'); 

//in your controller 
public function func($book = null, $chapter = null, $topic = null, $article = null) { 
... 
} 

私の問題

私のアプリで共有タグ私はすぐにでも10タグでの例を取得する以上の3または5をカウントする可能性があります。おそらくもっと

私の質問は

が、それは私が10個の、オプションのルーティングパラメータでURLを構築する必要があることを意味していますか?

Route::get('quotations/tags/{tag1?}/{tag2?}/{tag3?}/{tag4?}/{tag5?}/{tag6?}/{tag7?}', '[email protected]'); 

は私の質問は、私は目に見える唯一のボタンを持つフォームを作成することができ、そして隠された選択フィールドで、私はすべてのタグを入れることができ

を言い換え:私は本当にこのようSTH必要です。ルートはPOSTタイプであり、それは動作します。しかし、このソリューションはURLベースではありません。

答えて

0

私はデータとして、あなたはスラッシュを処理することができると思う:

Route::get('quotations/tags/{tagsData?}', '[email protected]') 
    ->where('tagsData', '(.*)'); 

はコントローラー:

public function controller($tagsData = null) 
{ 
    if($tagsData) 
    { 
     //process 
    } 
} 
0

[OK]を、これは私のソリューションです。私はタグ付きモデルを持っているので、タグの全リストを取得するためにURL内のタグを繰り返し処理する必要はありません。

十分にはこれです:

// Routes file: 
     Route::get('quotations/all-tags-in/{itemtype}/{modelid}', '[email protected]_tagged_in_model'); 

その後、私のコントローラで:

public function all_tagged_in_topic($itemtype, $id) { 

    if($itemtype == 'topic') { 
     $tags = Topic::find($id)->tags->pluck('name')->all(); 
     $topic = Topic::find($id); 

    } 
    if($itemtype == 'quotation') { 

     $tags = Quotation::find($id)->tags->pluck('name')->all(); 
     $quotation = Quotation::find($id); 

    } 
    // dd($tags); 

    $object = Quotation::withAnyTag($tags)->paginate(100);; 

そして、それが行われています。

最後の問題は、URLにタグを表示することです。 はそれを行うには、URLは、追加のオプションパラメータtagsている必要があります

// Routes file: 
     Route::get('quotations/all-tags-in/{itemtype}/{modelid}/{tags?}', '[email protected]_tagged_in_model'); 

をそして{url?}部分にあなただけのルート定義で受け入れパターンを壊さないであろう何かを書くことができます。 次のようなURLが表示されることがあります。

関連する問題