0

URL マッピングの処理方法に苦労しています。現在、Zend Framework を使用したフォト ギャラリー システムの構築に取り組んでいます。ギャラリー システムでは、カテゴリとギャラリーを処理できます。カテゴリには、子カテゴリまたはギャラリーを含めることができます。明らかに、ギャラリーには画像があります。これは、次の URL の可能性があることを意味します...

domain.com/gallery/ <== メイン ギャラリー ページ

domain.com/gallery/category1/gallery1/ <==画像ギャラリーを表示

domain.com/gallery/category1/category2/ <== ギャラリーのギャラリーを表示

domain.com/gallery/category1/category2/gallery1 <== 画像ギャラリーを表示

domain.com/gallery/category3/gallery2/image1 <== 単一の画像ページを表示

domain.com/gallery/gallery3/ <== カテゴリが無効になっているため、画像のギャラリーが表示されます

複数のオプションを処理するにはどうすればよいですか? 常に /{category}/{gallery}/{image}/ になる単純なタスクがあれば、それをまとめることができます。しかし、変数の数が変化する場所でそれを管理する方法に苦労しています。

各ギャラリー/カテゴリ/画像に一意の名前が付けられているという前提で実行すると、ギャラリーとカテゴリが同じ名前を共有しないことを意味し、最後の変数を除くすべての変数を単純に無視できます。最後の変数を受け取り、それを画像テーブル、ギャラリー テーブル、カテゴリ テーブルと比較し、最初の変数がヒットしたときに正しいビューに転送するスクリプトをセットアップできます。これは、ギャラリー システムへの呼び出しごとにおそらく 3 つのモデル クエリを使用するため、かなりリソースを集中的に使用するように思えますが、それ以外の方法を理解することはできません。

これを最も効率的に行うためのアイデアや提案はありますか?

4

1 に答える 1

1

URLはカテゴリの階層を知る必要はありません.IMO. 同意し、ギャラリーがコントローラーであるとすれば、次のように解決できます。

domain.com/gallery/display/gallery/23
domain.com/gallery/display/category/42
domain.com/gallery/display/image/5

これは、表示アクションだけがあり、残りをパラメーターとして渡すことを意味します。パラメータ ギャラリーを渡す場合は、それぞれの ID でギャラリーを表示します。パラメータ カテゴリを渡す場合は、このカテゴリにサブカテゴリがあるかどうかを確認し、それらまたはそれぞれのギャラリーを表示します。

ギャラリー モジュール、ディスプレイ コントローラー、ギャラリー、カテゴリ、画像アクションを備えたソリューションを考えることもできます。その場合、URL に /id/ の部分を追加する必要があります。

domain.com/gallery/display/gallery/id/23

モデルに階層を把握させ、それをブレッドクラムなどに反映させます。

于 2011-04-01T21:09:12.543 に答える