Symfony Routing Component v4 как импортировать второй yaml-файл приложения (правильно указать путь)?

Всю жизнь пользовался https://github.com/klein/klein.php удобен тем что все, что нужно для создания web-приложений здесь уже все интегрировано и склеено. Но в последнее время он стал редко обновляться, issue растут, пулл-реквесты тоже.

Поэтому принял решение переехать на компоненты симфони.

Чтобы заменить Klein мне нужно:
pimple/pimple - DI
symfony/http-foundation + symfony/http-kernel - Request\Response
symfony/routing + symfony/config + symfony/yaml - маршруты
symfony/templating - шаблонизатор

Как было удобно что в Klein все это уже склеено, а теперь мне надо все это склеить самому.

Ну ок, есть ядро отдельным пакетом, есть приложение (их несколько все используют одно ядро и расширяют его)

Код ядра
$fileLocator = new FileLocator([__DIR__]);
$loader = new YamlFileLoader($fileLocator);
$routes = $loader->load('routes.yaml');


routes.yaml находится в каталоге где ядро и хранит в себе маршруты используемые ядром и обязательно нужные всем приложениям, а также надо как-то подключить файл с маршрутами индивидуальными для приложения, находятся они в приложении /app/routes.yaml пытаюсь подключится и понятно что путь не находит, как правильно передать путь к файлу?

... несколько маршрутов используемых ядром

# app routes
app_routes:
   resource: '/app/routes.yaml'


UPDATE #1
Нашел свою ошибку, указал правильный путь и все заработало, а как можно этот путь задать извне, вернее я нашел в доках решение https://symfony.com/doc/current/routing/service_co...

$container = new ContainerBuilder();
$container->setParameter('app.routes_path', '../../server/app/routes.yaml');


app_routes:
   resource: '%app.routes_path%'


А он мне такой Cannot load resource "%app.routes_path%"
  • Вопрос задан
  • 175 просмотров
Решения вопроса 1
voronkovich
@voronkovich
Параметры не сработают. Контейнер и роутер ничего не знают друг о друге. В Symfony вся магия сделана в FrameworkBundle: https://github.com/symfony/framework-bundle/blob/8...

Symfony 4 - это микрофреймворк, лучше используйте его, а не собирайте собственный:

$ composer create-project symfony/skeleton

Также, вы можете передать в FileLocator несколько путей:

$fileLocator = new FileLocator([ __DIR__, __DIR__.'/../../app' ]);


См. https://api.symfony.com/4.0/Symfony/Component/Conf...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы