diff --git a/Services/Agnostic/BitrixInitializerRouter.php b/Services/Agnostic/BitrixInitializerRouter.php new file mode 100644 index 0000000..9c92e49 --- /dev/null +++ b/Services/Agnostic/BitrixInitializerRouter.php @@ -0,0 +1,23 @@ +router = new InitRouter( + $router, + new ErrorJsonController( + new Serializer( + [new ObjectNormalizer], + [new JsonEncoder] + + ) + ), + new EventDispatcher(), + new ControllerResolver(), + new ArgumentResolver( + new ArgumentMetadataFactory(), + [ + new RequestAttributeValueResolver(), + new RequestValueResolver(), + new SessionValueResolver(), + new DefaultValueResolver(), + new VariadicValueResolver(), + ] + ), + new RequestStack() + ); + + $routerInitializer->init($this->router); + } +} diff --git a/Services/Agnostic/RoutesLoader.php b/Services/Agnostic/RoutesLoader.php index de9121c..e462a4d 100644 --- a/Services/Agnostic/RoutesLoader.php +++ b/Services/Agnostic/RoutesLoader.php @@ -152,6 +152,14 @@ public function purgeCache() : void $filesystem->remove($this->cacheDir); } + /** + * @return RouterInterface + */ + public function getRouter(): RouterInterface + { + return $this->router; + } + /** * Создать (если надо), кэш. * diff --git a/readme.MD b/readme.MD index 967709f..a51ed27 100644 --- a/readme.MD +++ b/readme.MD @@ -112,4 +112,29 @@ public_page: ``` Если установлен Битрикс с версией модуля младше `21.400.0`, то соответствующие сервисы будут -удалены из бандла на стадии компиляции. \ No newline at end of file +удалены из бандла на стадии компиляции. + +## Использование роутера без контейнера и вне фреймворка + +`init.php`: + +```php +use Prokl\BitrixSymfonyRouterBundle\Services\Agnostic\RoutesLoader; +use Prokl\BitrixSymfonyRouterBundle\Services\Agnostic\Router; +use Prokl\BitrixSymfonyRouterBundle\Services\Agnostic\BitrixInitializerRouter; + +$agnosticRouter = new RoutesLoader( + $_SERVER['DOCUMENT_ROOT'] . '/local/configs/standalone_routes.yaml', + $_SERVER['DOCUMENT_ROOT'] . '/bitrix/cache/routes_agnostic', // Кэш; если null - без кэширования. + $_ENV['DEBUG'] // Режим отладки или нет +); + +$agnosticRouterInstance = new Router( + $agnosticRouter->getRouter(), + new BitrixInitializerRouter() +); +``` + +Все. Подтянутся роуты из `/local/configs/standalone_routes.yaml`. Автоматически подцепятся события. + +Допускается наличие нескольких таких "агностических" роутеров в один момент. \ No newline at end of file