カテゴリツリーにTreedoctrine拡張機能を使用しており、次のようなルートが必要です。
/cat/subcat1/subcat2/subcat3
私はそれを次のようなルートを定義することができます
/{cat}
/{cat}/{subcat}
/{cat}/{subcat}/{subcat2)
etc...
しかし、これを実装するためのよりエレガントで一般的な方法はありますか?無制限の数のレベルを受け入れることができるシステム?
カテゴリツリーにTreedoctrine拡張機能を使用しており、次のようなルートが必要です。
/cat/subcat1/subcat2/subcat3
私はそれを次のようなルートを定義することができます
/{cat}
/{cat}/{subcat}
/{cat}/{subcat}/{subcat2)
etc...
しかし、これを実装するためのよりエレガントで一般的な方法はありますか?無制限の数のレベルを受け入れることができるシステム?
できることは、ルーティングパラメータでスラッシュを受け入れることです(このルートの場合のみ)。スラッシュ区切り文字はカテゴリパラメータの一部であると見なされるため、他のパラメータをキューに入れることはできません...
したがって、ルーティングパラメータでスラッシュを管理する方法:
_hello:
pattern: /category/{category}
defaults: { _controller: AcmeDemoBundle:Demo:category }
requirements:
category: ".+"
呼び出す/category/cat1/sub1/sub2
とDemoController::categoryAction($category)
、$categoryパラメーターとして「cat1/ sub1/sub2」を指定してメソッドが呼び出されます。独自のコードを使用してデコードしてください!
公式ドキュメントにあるコードサンプル:http ://symfony.com/doc/2.0/cookbook/routing/slash_in_parameter.html