2015-09-12 3 views
2

У меня очень странная проблема с установкой Symfony2.Symfony2 FOS Rest bundle routing FileLoaderLoadException controller

Я работаю над спокойным web-сервисом и хотел бы настроить маршрутизацию.

У меня есть полностью работающее приложение и я хочу изменить мою конфигурацию routing.yml.

Рабочая конфигурация

my_product: 
    resource: My\Bundle\ProductBundle\Controller\DefaultController 
    type:  rest 
    prefix: /

Когда я изменяю, что:

my_product: 
    resource: "@MyProductBundle/Controller/" 
    type:  rest 
    prefix: /

Я получаю следующее сообщение об ошибке:

Symfony\Component\Config\Exception\FileLoaderLoadException" message="Can't find class for controller "@MyProductBundle/Controller/" in @MyProductBundle/Controller/ (which is being imported from "/home/myproduct/domains/example/v5/app/config/routing.yml"). Make sure the "MyProductBundle" bundle is correctly registered and loaded in the application kernel class. If the bundle is registered, make sure the bundle path "@MyProductBundle/Controller/" is not empty.

При изменении типа от " отдых" к «аннотации» ошибка исчезает.

Что я делаю неправильно? Я не могу это выяснить, и мои поиски ничего не ведут.

Большое спасибо заранее!

+1

ли Вы пробовали изменения "@ MyProductBundle/Controller /", чтобы "@ MyProductBundle/Controller /" контроллера по умолчанию? Ошибка говорит о том, что класс для контроллера не найден. В любом случае, когда вы укажете 'type: rest', вы сообщаете пакету автоматически генерировать маршруты из имен действий вашего контроллера, указанных в' resource', поэтому 'resource: My \ Bundle \ ProductBundle \ Controller \ DefaultController' должен работать, и я не вижу benfits от замены двух маршрутов, о которых вы указали. \ –

+0

Спасибо за помощь! Я думал, что не упоминать имя контроллера проще, потому что это экономит мне время, не добавляя каждый контроллер в конфигурацию маршрутизатора. Что ты думаешь по этому поводу? –

+1

Я так не думаю, sir.'type: annotation' сообщает 'FrameworkBundle', чтобы посмотреть в ваши файлы контроллеров в папке' controller' пакета, указанного вами в 'resource', и искать маршруты, определенные как аннотации. Но 'type: rest' сообщает' FOSRestBundle' искать действия в определенном контроллере и автоматически генерировать маршруты из имен действий. Это две разные вещи, которые обрабатываются двумя разными пучками. 'FOSRestBundle' реализует этот автоматизм, но я думаю, что он еще не реализует это для всех контроллеров в папке' controller'. Надеюсь, я не ошибаюсь и жду формы экспертной информации SO –

ответ

2

В настоящее время вы не можете импортировать все контроллеры пакета сразу при использовании FOSRestBundle. It will be added in FOSRestBundle 2.0. Импортируйте контроллеры отдельно, как в первом примере.

enter image description here

+0

Версия 2.0 была выпущен 21 июня 2016 года – Jonny

Смежные вопросы