我是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
{
}
但是,当我尝试加载以下网址:“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"
包已正确注册并加载到应用程序内核类中。
答案 0 :(得分:3)
尝试从routing.yml中删除type:annotation
编辑:
你的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
将显示您的路线实际是什么。
答案 1 :(得分:1)
如果更改为键入:annotation,则必须将资源路径更改为控制器路径。
projectnew_bundle:
resource: "@projectnew_bundle/Controller"
type: annotation
prefix: /start