0

シンプルなケース。私のすべてのアプリではrouting.yml、次のように定義された Route アノテーション ドライバーを使用しています。

MyBundle:
    resource: "@MyBundle/Controller/"
    type:     annotation
    prefix:   /someprefix

MyBundle の Ctrl コントローラーのアクションは次のようになります。

@Route("/{page}/{status}", name="default_action", defaults={"page" = 1, "status" = "ok"}, requirements={"page" = "\d+"})
public function defaultAction($page, $status) {...}

ここで、このアクションを作成したいと思います-私のWebページにアクセスしたときのデフォルトアクション。@Route("/")プレフィックスだから使えない。だから私はに追加していrouting.ymlます:

_welcome:
    pattern:  /
    defaults: { _controller: MyBundle:Ctrl:default }

そして、問題が始まる場所があります - Symfony2 はアノテーションからではなくアクションからだけデフォルトのコントローラーアクションを呼び出しており、エラーが発生します:

Controller "...:defaultAction()" requires that you provide a value for the "$page" argument (because there is no default value or because there is a non optional argument after this one).

したがって、単純に Symfony2 は @Route アノテーションからデフォルト値を取得していません。

質問: _welcome@Route を認識しているルートを呼び出す方法は?

4

1 に答える 1

0

yml 設定のデフォルトを見逃しています。次のようになります。

_welcome:
    pattern:  /
    defaults: { _controller: MyBundle:Ctrl:default, page: 1, status: ok }
于 2012-07-05T12:58:05.510 に答える