0

我是 symfony2 的新手。我正在为“Hello {Name}”创建一个简单的页面并使用 WAMP。我的 routing.yml 如下

projectnew_bundle:
    resource: "@projectnew_bundle/Resources/config/routing.yml"
    type:     annotation
    prefix:   /start

我的@projectnew_bundle/Resources/config/routing.yml 如下(projectnew_bundle 是 src 文件夹中 \project\new_bundle 的命名空间):

projectnew_bundle_hello:
    pattern:  start/hello/{name}
    defaults: { _controller: projectnew_bundle:Start:hello }

我还使用"new project\new_bundle\projectnew_bundle()"语法在 AppKernel.php 中注册了 bundle projectnew_bundle。我\src\project\new_bundle\projectnew_bundle.php的如下:

<?php

namespace project\new_bundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class projectnew_bundle extends Bundle
{
}

但是,当我尝试加载以下 URL 时:“ http://localhost/symfony_project/Symfony/web/app_dev.php/start/hello/Riten ”,它给出了 500 内部服务器错误:

无法加载资源"@projectnew_bundle/Resources/config/routing.yml"。确保"projectnew_bundle/Resources/config/routing.yml"捆绑包已正确注册并加载到应用程序内核类中。

4

2 回答 2

3

尝试从 routing.yml 中删除 type: 注释

编辑:

你的 app/cofig/routing.yml 有

projectnew_bundle:
    resource: "@projectnew_bundle/Resources/config/routing.yml"
    prefix:   /start

*注意:我删除了type: annotation

/start因此,您在包含的任何路由上设置前缀projectnew_bundle/Resources/config/routing.yml

然后你@projectnew_bundle/Resources/config/routing.yml有:

projectnew_bundle_hello:
    pattern:  start/hello/{name}
    defaults: { _controller: projectnew_bundle:Start:hello }

它使用从最终路由添加前缀projectnew_bundle_hello的模式创建路由,而不是您期望的那样。start/hello/{name}app/config/routing.yml/startstart/hello/{name}/start/hello/{name}

如果您希望您的预期路线有效,您可以start@projectnew_bundle/Resources/config/routing.yml.

该命令php app/console router:debug将向您显示您的路线实际上是什么。

于 2012-10-20T13:15:54.640 回答
1

If you change to type: annotation you have to change the resource path to the controller path.

projectnew_bundle:
resource: "@projectnew_bundle/Controller"
type:     annotation
prefix:   /start
于 2015-05-17T09:51:24.043 回答