Symfony2路由不受支持的密钥

Ste*_*one 2 php eclipse symfony

我正在学习Symfony 2,但我遇到了一些问题.使用教程,我在routing.yml内部包中创建了这个路径:

acme_demo_homepage:
path:     /hello/{name}
defaults: { _controller: AcmeDemoBundle:Default:index }

random:
path:     /random/{limit}
defaults: { _controller: AcmeDemoBundle:Random:index }
Run Code Online (Sandbox Code Playgroud)

和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>');
}

}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试执行localhost/app_dev.php/random/10此错误时出现:

路由文件"C:\ xampp\htdocs\progetti\Symfony\src\Acme\DemoBundle/Resources/config/routing.yml"包含"acme_demo_homepage":"random"的不支持的键.预期之一:"资源","类型","前缀","模式","路径","主机","方案","方法","默认值","要求","选项","条件".

fel*_*ins 5

我认为这是一个缩进问题.来自YAML规格:

" 在YAML块样式中,结构由缩进确定.

通常,缩进在行的开头定义为零个或多个空格字符.为了保持可移植性,不能在缩进中使用制表符,因为不同的系统处理制表符请注意,大多数现代编辑器都可以配置为按Tab键导致插入适当数量的空格
."

所以:

acme_demo_homepage:
    path:     /hello/{name}
    defaults: { _controller: AcmeDemoBundle:Default:index }

random:
    path:     /random/{limit}
    defaults: { _controller: AcmeDemoBundle:Random:index }
Run Code Online (Sandbox Code Playgroud)

或者,您可以在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
Run Code Online (Sandbox Code Playgroud)