Я изучаю 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». Ожидается одно из: «ресурс», «тип», «префикс», «шаблон», «путь», «хост», «схемы», «методы», «значения по умолчанию», «требования», «опции», «условие» ».
Я думаю, что это проблема отступа. От 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
Обратите внимание, что отступы жизненно важны в YAML. Если ваш фактический routing.yml
похоже, что вы опубликовали, то маршрутизация не может быть настроена правильно. Вот как это должно выглядеть:
acme_demo_homepage:
path: /hello/{name}
defaults: { _controller: AcmeDemoBundle:Default:index }
random:
path: /random/{limit}
defaults: { _controller: AcmeDemoBundle:Random:index }
Кажется, что форматирование вашего yml
файл неверный. Вам нужно помнить пробелы в yml
файл (помните, что вместо пробелов нельзя использовать табуляции) — намерение определяет структуру файла.
Ваш routing.yml
файл должен выглядеть так
acme_demo_homepage:
path: /hello/{name}
defaults: { _controller: AcmeDemoBundle:Default:index }
random:
path: /random/{limit}
defaults: { _controller: AcmeDemoBundle:Random:index }