我正在学习Symfony 2,但我遇到了一些问题。使用教程,我在routing.yml
内部包中创建了这个路径:
acme_demo_homepage:
path: /hello/{name}
defaults: { _controller: AcmeDemoBundle:Default:index }
random:
path: /random/{limit}
defaults: { _controller: AcmeDemoBundle:Random:index }
并且Eclipse在声明defaults
的行显示错误,并告诉我:
是意外的。
我创建了控制器:
<?php
namespace Acme\DemoBundle\Controller;
use Symfony\Component\HttpFoundation\Response;
class RandomController
{
public function indexAction($limit)
{
return new Response('<html><body>Number: '.rand(1, $limit).'</body></html>');
}
}
但是当我尝试执行localhost/app_dev.php/random/10
时会出现此错误:
路由文件&#34; C:\ xampp \ htdocs \ progetti \ Symfony \ src \ Acme \ DemoBundle / Resources / config / routing.yml&#34;包含&#34; acme_demo_homepage&#34;:&#34;随机&#34;的不支持的键。预期的一个:&#34;资源&#34;,&#34;类型&#34;,&#34;前缀&#34;,&#34;模式&#34;,&#34;路径&#34;,& #34;主持人&#34;,&#34;计划&#34;,&#34;方法&#34;,&#34;默认&#34;,&#34;要求&#34;,&#34;选项&# 34;,&#34;条件&#34;。
答案 0 :(得分:5)
我认为这是一个缩进问题。来自YAML规范:
“在YAML块样式中,结构由缩进确定。
在 通常,缩进被定义为零个或多个空格字符 为了保持可移植性,不得在缩进中使用制表符,因为不同的系统会以不同方式处理制表符。请注意,可以配置大多数现代编辑器,以便按Tab键导致插入适当数量的空格。 “
所以:
acme_demo_homepage:
path: /hello/{name}
defaults: { _controller: AcmeDemoBundle:Default:index }
random:
path: /random/{limit}
defaults: { _controller: AcmeDemoBundle:Random:index }
或者你可以用PHP设置你的路线(这是我的偏好)。例如:
<?php
//src/Acme/DemoBundle/Resources/config/routing.php
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\Routing\Route;
$collection = new RouteCollection();
# main route
$collection->add('_index', new Route('/dashboard/index/{page}/{year}/{month}', array(
'_controller' => 'AcmeDashboardBundle:Default:index',
'page' => 1,
'year' => date('Y'),
'month' => date('n'),
)));
return $collection;
//end of file
答案 1 :(得分:0)
请注意,缩进在YAML中至关重要。如果您的实际routing.yml
看起来像您发布的内容,则无法正确配置路由。以下是它的外观:
acme_demo_homepage:
path: /hello/{name}
defaults: { _controller: AcmeDemoBundle:Default:index }
random:
path: /random/{limit}
defaults: { _controller: AcmeDemoBundle:Random:index }
答案 2 :(得分:0)
您的yml
文件的格式似乎是错误的。你需要考虑yml
文件中的空格(记住不要使用制表符而不是空格) - 意图定义文件结构。
您的routing.yml
文件应该是
acme_demo_homepage:
path: /hello/{name}
defaults: { _controller: AcmeDemoBundle:Default:index }
random:
path: /random/{limit}
defaults: { _controller: AcmeDemoBundle:Random:index }