lturi / symfony-extensions
为 symfony flex 系统开发的应用增加功能性的包
dev-full
2021-10-23 17:37 UTC
Requires
- php: >=7.3
- ext-json: *
- ramsey/collection: ^1.1
- symfony/cache: 5.1.*
This package is auto-updated.
Last update: 2024-09-24 00:11:47 UTC
README
composer require lturi/symfony-extensions
通过 composer 安装就足够了(如果项目遵循常见的 symfony 规则开发),这样就可以使其工作。
为了启用 2 个路由(路由收集器和翻译),可能需要对项目配置文件进行一些小的修改。打开 config/routes.yaml 文件并添加
lturi_symfony_extensions:\
resource: lturi_symfony_extensions\
type: extra
功能
- 实用类
- ApiController(管理 generic ApiController 的更好解决方案,优于 AbstractController)
- RestApiController(包含管理 rest api 端点的基函数)
- 控制器
- RoutesController(公开项目的所有路由)
- TranslationController(公开项目的翻译,仅针对主要翻译)
- 异常
- ValidationsErrorsException(消息中多个错误时的异常)
- 服务
- EntityNormalizer(检测对象是否引用实体,并最终加载它的正常化器)
- ApiResponse(回答端点的 json 响应的更好解决方案)
- HttpExceptionService(用于更好地管理异常的服务)
- SerializerService(使用常见的正常化器等配置的序列化器服务,包括 EntityNormalizer)
- 验证器
- SafeString(验证字符串以防止数据库 XSS 注入)
参考完整文档以获取有关单个组件的详细信息
待办事项:缓存响应修复
- 由于 symfony 无法完全处理缓存响应,这里有一个
小修复。在 index.php 文件中插入以下内容
if ('prod' === $kernel->getEnvironment()) {
$kernel = new CachedKernel($kernel);
}
然后,自动将返回的每个 CachableResponse 或 CachableApiResponse 类型的响应进行缓存。
部分完成
- commandApi:已完成
- graphQLApi:66%,需要重构,现在已损坏
- jsonApi:66%,需要重构,现在已损坏
- restApi:0
- rest:需要重构为 restApi/framework,然后删除
- package.json/composer.json:待检查依赖项
用户管理
https://symfony.com.cn/doc/current/security.html
composer require symfony/security-bundle
# config/packages/security.yaml security: enable_authenticator_manager: true providers: # this name is casual, class and property should match to this snippet app_user_provider: entity: class: Lturi\SymfonyExtensions\Framework\Entity\User property: username encoders: Lturi\SymfonyExtensions\Framework\Entity\User: # insert whatever algoritm you want algorithm: sha512
命令 API 示例
创建/更新数据放入 "data",而标准放入 "filters"
php bin/console command-api:create site --content '{\"data\": {\"name\": \"test api create\", \"baseUrl\":\"test\", \"siteUrls\":[{\"url\":\"testSiteUrl\"}]}}'
结果
{"id":"01F1X6WA7ZMF9CZP73C1EANMWA","baseUrl":"test","dateCreate":"2021-03-28T22:02:22+02:00","dateUpdate":null,"lastCheckDate":null,"checking":false,"siteUrls":[{"id":"01F1X6WA84RTRHG7M0JRJYM19M","url":"testSiteUrl","site":"000000000debbbe70000000003d488a4","siteUrlChecks":[],"siteUrlSummaries":[]}]}
约束
如果相关实体,请在此属性上添加此注解
Symfony\Component\Validator\Constraints\Valid