0

我正在尝试从 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”不存在。

我多次检查代码,但找不到任何错误。

4

3 回答 3

6

只需添加

<?php

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

它解决了我的问题。

于 2011-04-16T02:56:03.703 回答
0

Afaik 在 Symfony 2.0 开发人员内部正在进行讨论,他们应该在哪些地方保留“Bundles”扩展。

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

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

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

    默认值:{ _controller: AcmeStudyBundle:Hello:index } 到默认值:{ _controller: AcmeStudy:Hello:index }

  2. 应用程序/配置/路由.xml

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

...我在浏览器中有一个漂亮的“Hello Ryan”。

希望这可以帮助!

于 2011-04-15T00:21:49.413 回答
0

您可能正在运行 PR9。更新到 PR11(最新),我敢打赌这会得到解决。Symfony 开发人员删除了 PR9 中的 'Bundle' 后缀,但.

此外,Symfony 开发人员保留了一个更新日志,我觉得这非常有用。

于 2011-04-15T04:33:20.127 回答