私はまだ Symfony2 に慣れていないので、次の問題に頭を悩ませています。
次のルートが定義されたコントローラーにメインの参照アクションがあります(コントローラー内):
/**
* @Route("/browse")
* @Route("/browse/{page}")
* @Route("/browse/c/{category}/{categoryName}")
* @Route("/browse/c/{category}/{categoryName}/{page}")
* @Route("/browse/c/{category}/b/{brand}/{page}")
* @Route("/browse/b/{brand}")
* @Route("/browse/b/{brand}/{page}")
* @Template()
*/
public function browseAction($category = 0, $page = 1, $brand = 0) {
上記のルーティングは問題なく動作します。
問題は、twig ビューまたはビュー ヘルパーから URL を生成することです。
ビューヘルパーで次のことができるようにしたいと思います。
{{ url('browse', {'brand': '123'}) }}
これは、routing.yml の次のコードで問題なく動作します。
browse:
pattern: /browse/b/{brand}
defaults: { _controller: MyCoreBundle:Browse:browse }
私はそれから試しました:
browse:
pattern: /browse/b/{brand}
pattern: /browse/c/{category}/b/{brand}
defaults: { _controller: MyCoreBundle:Browse:browse }
ただし、最後のパターンのみが適用されるようで、次を使用しようとするとエラーがスローされます。
{{ url('browse', {'brand': '123'}) }}
routing.yml で、一意の名前を付けた複数の個別のルートを作成できることに気付きました。しかし、それは、使用される変数に応じて、別のルート名を指定する必要があることを意味します。
私も試しました:
browse:
pattern: /browse/c/{category}/b/{brand}/{page}
defaults: { _controller: MyCoreBundle:Browse:browse }
と:
{{ url('browse', {'brand': '123', 'category':'', 'page': '1'}) }}
しかし、それはカテゴリが正しい形式ではないというエラーをスローしました..
ここで何か不足していますか?誰かが私を正しい方向に向けることができますか? すべての変数を取り、入力に基づいて URL を構築できる twig 拡張機能を作成する必要があるのでしょうか?