1

私は Symfony2 コードを見てきましたが、ControllerResolver クラスの関数を拡張/オーバーライドせずに使用する正しいコントローラーをどのように判断するかわかりません。デフォルトの ControllerResolver は、コントローラーへの BundleName:Bundle:action のようなコントローラーを見つけることができないと思います。

4

1 に答える 1

0

コントローラーは HTTPKernel クラス (https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpKernel/HttpKernel.php) で解決されます。そこではこうなる

    // load controller
    if (false === $controller = $this->resolver->getController($request)) {
        throw new NotFoundHttpException(sprintf('Unable to find the controller for path "%s". Maybe you forgot to add the matching route in your routing configuration?', $request->getPathInfo()));
    }

コントローラーが解決されると、コントローラー クラスはリクエストの __controller プロパティに存在します。

于 2012-04-17T12:39:02.877 に答える