spiechu/symfony-commons-bundle

此包已被弃用且不再维护。未建议替代包。

我用于Symfony的便捷工具箱。

0.3 2018-01-24 21:23 UTC

This package is auto-updated.

Last update: 2022-02-05 13:00:57 UTC


README

TravisCI StyleCI Scrutinizer 代码覆盖率
Build Status StyleCI Scrutinizer Code Quality Code Coverage

简介

此bundle的主要目的是向Symfony框架引入一些“缺失”的功能。

将此bundle视为我为Symfony认证所做的准备的一部分。我只能通过实践而不是被动地阅读文档来学习。

bundle特性

bundle规则

  1. 默认情况下禁用每个功能。您只需启用您需要的。
  2. 无需在不需要时保留事件监听器。
  3. 提供合理的默认值和广泛的定制可能性。

功能

GET方法覆盖

启用此功能将允许您使用类似 http://myapp.com/mypath?_method=DELETEPUT 的URL来覆盖HTTP GET请求方法。

有时您可能需要此类功能,例如在管理区域中禁止/删除用户。您可以公开简单的链接,同时仍然有干净的PUT / DELETE控制器操作。

完整文档在这里

响应模式验证

响应模式验证允许您实时验证端点响应。您只需使用 @ResponseSchemaValidator 注解来注释控制器操作。

典型用例

// src/AppBundle/Controller/AdminController.php

use Spiechu\SymfonyCommonsBundle\Annotation\Controller\ResponseSchemaValidator;

class AdminController extends Controller
{
    /**
     * @Route("/", name="my_route")
     *
     * @ResponseSchemaValidator(
     *  json={
     *   200="@AppBundle/Resources/response_schema/my_route_200.json",
     *   500="@AppBundle/Resources/response_schema/my_route_500.json"
     *  }
     * )
     */
    public function indexAction(): Response
    {
        // ...
    }
}

完整文档在这里

API版本控制

当您有多个API版本时,通常是通过扩展控制器来完成的。此bundle引入了方便的 @ApiVersion 注解。您需要使用此自定义注解注释您的控制器类并设置版本,如下所示

// src/AppBundle/Controller/V1_0/UserController.php

use Spiechu\SymfonyCommonsBundle\Annotation\Controller\ApiVersion;

/**
 * @ApiVersion("1.0")
 */
class UserController extends Controller
{
    /**
     * @Route("/", name="my_route")
     */
    public function indexAction(): Response
    {
        // ...
    }
}

然后在扩展类中

// src/AppBundle/Controller/V1_1/UserController.php

use Spiechu\SymfonyCommonsBundle\Annotation\Controller\ApiVersion;
use Spiechu\SymfonyCommonsBundle\Controller\V1_0\UserController as BaseUserController;

/**
 * @ApiVersion("1.1")
 */
class UserController extends BaseUserController
{
    /**
     * @Route("/", name="my_route")
     */
    public function indexAction(): Response
    {
        // ...
    }
}

从现在开始,您可以将 Spiechu\SymfonyCommonsBundle\Service\ApiVersionProvider 服务注入到您的服务中并检查当前请求的API版本。

完整文档在这里

安装

我假设您已全局安装了Composer。

基于Flex的安装(Symfony 3.4和4)

下载并启用Bundle

在Symfony项目目录中运行控制台命令

composer req spiechu/symfony-commons-bundle

启用一些/所有Bundle功能

# config/packages/spiechu_symfony_commons.yml

spiechu_symfony_commons:
    get_method_override:
        enabled: true
    response_schema_validation:
        enabled: true
    api_versioning:
        enabled: true

基于Composer的安装(Symfony 3.4)

下载Bundle

在Symfony项目目录中运行控制台命令

composer require spiechu/symfony-commons-bundle

启用Bundle

通过在项目的app/AppKernel.php文件中添加以下行来启用Bundle

// app/AppKernel.php

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = [
            // ...
            new Spiechu\SymfonyCommonsBundle\SpiechuSymfonyCommonsBundle(),
        ];

        // ...
    }
}

启用某些/所有Bundle功能

配置Bundle的首选方式是通过YAML配置

# app/config/config.yml

spiechu_symfony_commons:
    get_method_override:
        enabled: true
    response_schema_validation:
        enabled: true
    api_versioning:
        enabled: true

配置

配置参考可以在这里找到