b13 / slimphp-bridge
提供用于在TYPO3前端站点中注册Slim PHP应用程序的中间件
Requires
- sapphirecat/slim4-http-interop-adapter: ^1.0
- slim/slim: ^4.1
- typo3/cms-core: ^10.4 || ^11.5 || ^12.0
- typo3/cms-frontend: ^10.4 || ^11.5 || ^12.0
Requires (Dev)
- nyholm/psr7: ^1.1
- nyholm/psr7-server: ^1.0.1
- phpunit/phpunit: ^9.5
- typo3/coding-standards: ^0.5.5
README
在TYPO3前端请求的PSR-15中间件中启动SlimPHP应用程序。
为此你需要两件事
- 使用SlimPHP的
RequestResponseArgs
策略在PHP中创建你的端点 - 在你的站点配置文件中配置你的端点
清除缓存,然后你应该可以正常使用了。
描述
TYPO3 v9提供了一种灵活的方式,可以通过PSR-7和PSR-15钩入前端渲染过程并执行完全不同的操作。
SlimPHP也基于PSR标准,如果TYPO3开发者需要通过例如REST集成一个合适的API,则非常适合。
这个小包装扩展有助于快速开始使用小API层,但并不旨在成为TYPO3 CMS的完全无头解决方案。
然而,TYPO3 PHP开发者应该熟悉快速启动处理自定义端点,而不必编写TypoScript。
安装
通过composer req b13/slimphp-bridge
安装(目前仅为composer安装,因为需要一些PHP依赖项)。
在TYPO3后端激活该扩展。
配置
然后调整你的站点配置以添加自定义路由。
type: slim
条目启用SlimPHP应用程序。然后当前站点对象在请求对象中可用。
routes: - route: '/api' type: 'slim' # add middlewares for the whole application. Convenient for any error handling or adding Preflight checks (OPTIONS) middlewares: - 'B13\MyExtension\Middleware\PreflightCheck' groups: - route: '/v1' middlewares: # enable this if you don't manage your languages via the URL endpoint + the base site handling. - 'B13\SlimPhp\Middleware\PreferredClientLanguageSelector' # enable this if you need extbase in your custom setup - 'B13\SlimPhp\Middleware\ExtbaseBridge' routes: # load a file - methods: [any] route: '/schema.json' file: 'EXT:myextension/Resources/Private/Api/schema_v1.json' contentType: 'application/json' - methods: [get] route: '/article' callback: B13\MyExtension\Controller\LoadArticlesController - methods: [get] route: '/customer' callback: B13\MyExtension\Controller\CustomerController:fetchAll middlewares: [B13\MyExtension\Middleware\JwtAuthentication] - methods: [get] route: '/customer/{id}' callback: B13\MyExtension\Controller\Api\CustomerController:fetch middlewares: [B13\MyExtension\Middleware\JwtAuthentication] - methods: [put] route: '/customer/{id}' callback: B13\MyExtension\Controller\Api\CustomerController:update middlewares: [B13\MyExtension\Middleware\JwtAuthentication]
配置类似于使用SlimPHP和TYPO3所做的那样,你的控制器只需遵循SlimPHP中的RequestResponseArgs
策略模式。
一旦创建你的端点(回调),清除缓存,你就可以直接运行你的安装。
TYPO3 10.4:如果你想在回调中使用DI,你将必须在DI配置中将它们公开
services: B13\MyExtension\Controller\Api\CustomerController: public: true
目前,该扩展包含Tobias Nyholm的PSR实现,因为它提供了适当的PSR-17工厂。
注意事项
每次更改配置时,请确保清除TYPO3核心缓存。
待办事项
- 更多文档以开始并定义所有选项
- 更多测试
- 路由参数的更多灵活性
- 适当的错误处理
许可证
与TYPO3核心一样,此扩展受GPL2或更高版本的许可。有关详细信息,请参阅LICENSE文件。
作者和维护
此扩展最初由Benni Mack为b13,斯图加特的客户项目创建。
查找我们开发的其他TYPO3扩展,这些扩展有助于我们在客户项目中创造价值。作为我们工作方式的一部分,我们专注于测试和最佳实践,以确保所有代码的长期性能、可靠性和结果。