2

Laravel 5.3 と Backpack CRUD に基づくプロジェクトに取り組んでいます。私のプロジェクトには、約 8 つの異なるコンテンツ タイプ (ニュース、ページ、ポートフォリオ、イベント、チーム、ビデオ、ギャラリー、求人) があります。

すべてのコンテンツ タイプ (nn) にタグを追加できるようにする必要があり、すべてのコンテンツ タイプには固有のタグがあるため、タグはコンテンツ タイプ間で共有されません。

select_multiple または select2_multiple フィールド タイプを使用する場合、コンテンツ自体に 8 つのテーブル、8 つのピボット テーブル、およびタグ (!) に 8 つのテーブルが必要になります。

明らかに、タグ用のテーブルを 1 つだけにしたいのですが、select_multiple または select2_multiple フィールド タイプを使用すると、すべてのコンテンツ タイプの編集フォームですべてのタグが取得されます。

だから、私の質問は: select_multiple または select2_multiple フィールド タイプの結果をフィルタリングするエレガントな方法はありますか?

2 つのコンテンツ タイプを持つ単純なスキーマを作成しました: http://dbdesigner.net/designer/schema/60412

この例では、ニュースやペ​​ージのコンテンツを編集しているときに、content_type_id でタグ リストをフィルタリングできるようにしたいと考えています。そのため、news-edit フォームにニュース タグを表示し、page-edit フォームにページ タグのみを表示したいだけです。

それとも、select_multiple フィールド タイプを意図したとおりに使用し、8 つのタグ テーブルを受け入れる必要があるのでしょうか (?)。

ヘルプやアドバイスをいただければ幸いです。

4

1 に答える 1

1

きれいな方法は次のようになると思います:

  • タグの使用ごとに異なるモデルを作成するためNewsTag、モデルのみを拡張しPageTagグローバル スコープを使用して の後に結果をフィルタリングします。PortfolioTagTagcontent_type_id

  • バックパック select2_multiple フィールドをNewsTag、などPageTagで使用します。モデルにPortfolioTag設定したものはすべて使用されます (属性、ミューテーター、アクセサーなどを含む)。Tagtable

乾杯!

于 2016-12-13T07:00:05.873 に答える