skalar / router
Bitrix 的路由组件
Requires
- php: >=5.6.0
- overblog/graphql-bundle: 0.11.x-dev
- symfony/config: ^3.4
- symfony/dependency-injection: ^3.4
- symfony/http-foundation: ^3.4
- symfony/http-kernel: ^3.4
- symfony/routing: ^3.4
- symfony/validator: ^3.4
- symfony/yaml: ^3.4
- twig/twig: ^2.5
- webonyx/graphql-php: 0.12.x-dev
README
Bitrix 的路由组件
使用
将 vendor/skalar/router/examples/router 文件夹复制到您的命名空间中(例如 /local/components/skalar)
配置 .htaccess 重定向到 index.php
在 index.php 中调用组件:$APPLICATION->IncludeComponent( "skalar:router", "", [ 'BASE_URL' => '/path' ], false ); 示例 vendor/skalar/router/examples/root/index.php 参数: BASE_URL - 路由文件夹(可选),您还可以在 urlrewrite.php 数组中添加规则('CONDITION' => '#^/path/#', 'ID' => NULL, 'PATH' => '/path/index.php', 'SORT' => 90,)
基本路由基于组件 symfony "symfony/http-foundation" 和 "symfony/routing",更多信息请参阅这些包的文档。
使用 .default(或另一个模板)模板。
公共
配置 routes.yaml 以配置路由。控制器必须扩展 Skalar\Controller\PublicController 并具有命名空间 Skalar\Controller。它们应位于 "controllers" 文件夹中。所有控制器操作都接收 2 个参数:Symfony\Component\HttpFoundation\Request $request 和数组 $state。您可以获取任何请求参数:$request->get("param")。所有控制器都返回数组 $state。您可以在控制器中使用受保护的属性 "headers" - Symfony\Component\HttpFoundation\ResponseHeaderBag 设置头信息。您可以使用控制器方法 setStatus() 设置响应状态。默认情况下,路由器响应是 json。您可以覆盖控制器的 getRender() 方法。它返回一个闭包,用于渲染内容。闭包接收 2 个参数:数组 $state 和字符串 $url,返回字符串内容;
中间件
在调用任何公共控制器操作之前调用中间件。示例在 middleware 文件夹中。中间件类必须只有一个方法 __invoke()。该方法类似于控制器操作。
API
API 有自己的路由。您必须扩展 Skalar\Routing\AbstractApi 并实现 getRoutes() 方法。您的类必须位于 api 文件夹中。skalar/router 有两个已实现的 API:rest 和 graphQl(Skalar/Api/Rest 和 Skalar/Api/GraphQl)。您可以将它们作为实现您自己的 API 的基础。
rest
工作文件夹 rest。所有 rest 控制器都有两个方法 get 和 post。它们接受 0、1 或 2 个参数。使用 $request->get('param1') 和 $request->get('param2')。rest 路由类似于 /rest/test/{param1}/,其中 test 是控制器名称的小写。您可以在 api 文件夹中覆盖 rest API,在您的类中扩展 Skalar/Api/Rest 或直接扩展 SkalarRoutingModule\AbstractApi。
graphQl
工作文件夹 graphql。路由 /graphql/。在 graphql 文件夹中位于两个基本类型。其他类型必须实现为这些。类型 - 是一个扩展 GraphQL\Type\Definition\ObjectType 或另一个的类。它必须具有命名空间 Skalar\Type。它包含在其他类型中,如 Skalar\GraphQL\Types::catalog(),其中 catalog 是类类型的名称的小写。有关更多信息,请参阅包 "webonyx/graphql-php" 的文档 http://webonyx.github.io/graphql-php/。