问题描述
|
我正在尝试从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开发人员会保留一个更新日志,我认为该日志非常有用。