symfony2无法找到控制器

时间:2011-04-14 12:00:07

标签: symfony controller

我正在尝试从Symfony2开始,但是在Symfony 2“书籍”部分“在Symfony 2中创建页面”之后立即遇到了问题:

我这样做了:

创建了包

php app/console init:bundle "Acme\StudyBundle" src

* 在app / autoload.php *

中添加了命名空间
$loader->registerNamespaces(array(
    'Acme'                         => __DIR__.'/../src',
));

初始化捆绑

// app/AppKernel.php
public function registerBundles()
{
    $bundles = array(
        // ...
        new Acme\StudyBundle\AcmeStudyBundle(),
    );

    // ...

    return $bundles;
}

在app / config.routing.yml和src / Acme / StudyBundle / Resources / config / routing.yml中创建路由

# app/config/routing.yml
homepage:
    pattern:  /
    defaults: { _controller: FrameworkBundle:Default:index }

hello:
    resource: "@AcmeStudyBundle/Resources/config/routing.yml"


# src/Acme/StudyBundle/Resources/config/routing.yml
hello:
    pattern:  /hello/{name}
    defaults: { _controller: AcmeStudyBundle:Hello:index }

创建了控制器

// src/Acme/StudyBundle/Controller/HelloController.php

namespace Acme\StudyBundle\Controller;
use Symfony\Component\HttpFoundation\Response;

class HelloController
{
    public function indexAction($name)
    {
        return new Response('<html><body>Hello '.$name.'!</body></html>');
    }
}

当我加载页面时:http://localhost/app_dev.php/hello/Ryan Symfony给了我一个例外:

无法找到控制器“AcmeStudyBundle:Hello” - 类“Acme \ StudyBundle \ Controller \ HelloController”不存在。

我多次接管代码,但找不到任何错误。

3 个答案:

答案 0 :(得分:6)

只需添加

  

<?php

在控制器文件的开头:src / Acme / StudyBundle / Controller / HelloController.php

它解决了我的问题。

答案 1 :(得分:0)

Afaik在Symfony 2.0开发人员中讨论了他们应该保留“Bundles”扩展名的地方。

我刚刚通过Git抓取了最新版本的Symfony,并按照您的代码1:1进行操作。

我也收到了各种错误消息,但是当我改变了......

    在src / Acme / StudyBundle / Resources / config / routing.yml

    默认值:{_ console:AcmeStudyBundle:Hello:index} 至 默认值:{_ control:AcmeStudy:Hello:index}

  1. 应用程序/配置/ routing.xml

    资源:“@ AcmeStudyBundle / Resources / config / routing.yml” 至 资源:“@ AcmeStudy / Resources / config / routing.yml”

  2. ...我在浏览器中找到了一个漂亮的“Hello Ryan”。

    希望这有帮助!

答案 2 :(得分:0)

您可能正在运行PR9。更新到PR11(最新),我敢打赌这会得到解决。 Symfony devs删除了PR9中的'Bundle'后缀,但added it back again shortly there after

此外,Symfony开发人员保留Update log,我认为非常有帮助。