我正在尝试从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”不存在。
我多次接管代码,但找不到任何错误。
答案 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}
应用程序/配置/ routing.xml
资源:“@ AcmeStudyBundle / Resources / config / routing.yml” 至 资源:“@ AcmeStudy / Resources / config / routing.yml”
...我在浏览器中找到了一个漂亮的“Hello Ryan”。
希望这有帮助!
答案 2 :(得分:0)
您可能正在运行PR9。更新到PR11(最新),我敢打赌这会得到解决。 Symfony devs删除了PR9中的'Bundle'后缀,但added it back again shortly there after。
此外,Symfony开发人员保留Update log,我认为非常有帮助。