如何解决symfony2找不到控制器
| 我正在尝试从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 \”不存在。
我多次检查代码,但找不到任何错误。
解决方法
只需添加
<?php
在控制器文件的开头:src / Acme / StudyBundle / Controller / HelloController.php
它解决了我的问题。
,Afaik在Symfony 2.0开发人员中进行了讨论,讨论他们应该在哪个位置保留“捆绑包”扩展名。
我刚刚通过Git获取了最新版本的Symfony,并按照1:1的代码进行操作。
我也收到各种错误消息,但是当我更改时...
在src / Acme / StudyBundle / Resources / config / routing.yml中
默认值:{_controller:AcmeStudyBundle:Hello:index}
至
默认值:{_controller:AcmeStudy:Hello:index}
app / config / routing.xml
资源:\“ @ AcmeStudyBundle /资源/config/routing.yml \”
至
资源:\“ @ AcmeStudy / Resources / config / routing.yml \”
...我在浏览器中看到一个漂亮的\“ Hello Ryan \”。
希望这可以帮助!
,您可能正在运行PR9。更新到PR11(latest),我敢打赌这会解决。 Symfony开发人员在PR9中删除了“ Bundle”后缀,但此后不久又将其重新添加。
另外,Symfony开发人员会保留一个更新日志,我认为该日志非常有用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。