Symfony2 маршрутизирует неподдерживаемые ключи

Я изучаю 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 эта ошибка появляется:

Файл маршрутизации «C: \ xampp \ htdocs \ progetti \ Symfony \ src \ Acme \ DemoBundle / Resources / config / routing.yml» содержит неподдерживаемые ключи для «acme_demo_homepage»: «random». Ожидается одно из: «ресурс», «тип», «префикс», «шаблон», «путь», «хост», «схемы», «методы», «значения по умолчанию», «требования», «опции», «условие» ».

2

Решение

Я думаю, что это проблема отступа. От YAML Spec:

«В стилях блоков YAML структура определяется отступом.

В
Вообще, отступ определяется как ноль или более пробелов в
начало строки. Для обеспечения переносимости символы табуляции не должны использоваться в отступах, поскольку разные системы обрабатывают табуляцию по-разному. Обратите внимание, что большинство современных редакторов могут быть настроены так, что нажатие клавиши табуляции приводит к вставке соответствующего количества пробелов
.
«

Так:

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
5

Другие решения

Обратите внимание, что отступы жизненно важны в YAML. Если ваш фактический routing.yml похоже, что вы опубликовали, то маршрутизация не может быть настроена правильно. Вот как это должно выглядеть:

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

random:
path:     /random/{limit}
defaults: { _controller: AcmeDemoBundle:Random:index }
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 }
0
По вопросам рекламы [email protected]