注釈を介してコントローラを定義する方が簡単かもしれません。 route.ymlで
:
MineTestBundle:
resource: "@MineTestBundle/Controller/"
type: annotation
次に、あなたがあなたのコントローラで直接ルートを定義することができます。
/**
* @Route("/foo")
*/
class FooController extends Controller {
/**
* @Route("/", name="_foo_index")
* @Template()
*/
public function indexAction() {
return array();
}
/**
* @Route("/{page}/", name="_foo_page")
* @Template()
*/
public function pageAction($page) {
return array('page' => $page);
}
}
は、今あなたがindexActionに来/foo
にアクセスしようとしたとき、あなたは/foo/1/
にアクセスするときは、pageActionに来ます。
編集:誤解のために申し訳ありません
。あなたの問題を再現しようとしました。あなたはへページのデフォルトを設定することができ、パラメータなしのルートで
foo_route:
pattern: /foo/{page}/
defaults: { _controller: AcmeDemoBundle:Foo:list }
requirements:
name: ".+"
foo_route_foo:
pattern: /foo
defaults: { _controller: AcmeDemoBundle:Foo:list, page: 1 }
requirements:
name: ".+"
{ページ}:最も簡単な方法は、このようなあなたの設定で2つのルートを定義することです。
しかし、ここクックブックではそう/foo/123/234/
の後に来るものすべてが変数$page
であり、あなたがあなたの機能で自分のためにそれらを分割することができますルートで/を許可するので、その可能章How to allow a "/" character in a route parameterです。代わりに、経路における末尾の円記号を排除し、0個以上の文字(*)に一致する正規表現を緩和することによって
/foo
/foo/
/foo/page/1
:別個であるが関連する場合
いただきました別のルートをhaveingそんなに悪いですか? – Gigala