おそらく、注釈を介してコントローラーを定義する方が簡単です。
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
にアクセスし、アクセスするとpageActionにアクセスし/foo/1/
ます。
編集:
誤解して申し訳ありません。私はあなたの問題を再現しようとしました。最も簡単な方法は、次のように設定で 2 つのルートを定義することです。
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: ".+"
パラメータ{page}のないルートでは、ページのデフォルトを1に設定できます。
しかし、ここのクックブックには、ルートパラメーターで「/」文字を許可する方法の章があり、ルートで/を許可して、その後に続くすべてが/foo/123/234/
変数$page
にあり、関数で自分でそれらを分割できます。