lturi/symfony-extensions

为 symfony flex 系统开发的应用增加功能性的包

安装: 48

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

语言:CSS

类型:symfony-bundle

dev-full 2021-10-23 17:37 UTC

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