/ category / subcategory / n-subcategories/articleのようなネストされたカテゴリを持つ人間が読めるURL。CakePHP 2.2.3を使用していますが、ルーティングの問題に対する適切な解決策が見つかりません。2つのテーブルの使用:
- 記事(製品や投稿、または...)
- 通常の「単一の」ビューを持っている
- 記事は1つのカテゴリに属します
- カテゴリ
- ネストされた(nレベルのツリーの動作)
- 1つのカテゴリに多くの記事を含めることができます
- category-viewには、このカテゴリに関連するすべての記事が一覧表示されます
- カテゴリビューは、記事リストを表示するためにpaginatorを使用します
私が推測する非常に一般的な例。しかし、次のようにネストされたカテゴリのURLパスを取得するには、ルーターを今すぐ定義する必要があります。
/categoryname1 (showing category view)
/categoryname1/articlename1 (showing article view)
/categoryname2/articlename2 (showing article view)
/categoryname2/subcategoryname1 (showing category view)
/categoryname2/subcategoryname2/articlename4 (showing article view)
/n-categoryname/././...n-subcategoryname (showing category view)
/n-categoryname/././...n-subcategoryname/n-articlename (article view)
私はroutes.phpですべてのルートを修正しようとしましたが、それはあまり快適ではなく、動的な解決策があるはずだと思います。
また、カテゴリエイリアスと記事エイリアスからすべてのルートを自動的に生成し、それらを別の「ルート」データベーステーブルに保存しようとしましたが、機能しましたが、単一ルートのハンデレットを定義する必要はないと思いますか?!
また、ルーターで修正されたすべてのカテゴリを定義しようとしました。
Router::connect(
'/any-category-name',
array('controller' => 'categories', 'action' => 'view', 1)
);
そして記事のために
Router::connect(
'/any-category-name/:slug',
array('controller' => 'articles', 'action' => 'view'),
array('pass' => array('slug'))
);
しかし、この方法では、すべての記事がすべてのカテゴリで利用可能であり、これは良い解決策ではありません。そして、私は使用することを考えました
Router::connect(
'/:slug', ...
しかし、2つの異なるコントローラーと2つの異なるビューが可能であるため、続行する方法がわかりません(また、この場合でもPaginationが機能するかどうか、さらにコントローラーを使用したい場合はどうなるかわかりません) /インストールのアクション)。
Cakeで2つのコントローラー(カテゴリーと記事)を持つネストされたURLを取得するのはそれほど難しいことではないと思いますか?!役立つアドバイスをありがとう!