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