spiechu / symfony-commons-bundle
此包已被弃用且不再维护。未建议替代包。
我用于Symfony的便捷工具箱。
0.3
2018-01-24 21:23 UTC
Requires
- php: >=7.1
- ext-xml: *
- justinrainbow/json-schema: ~5.0,<5.2.2|>=5.2.5,~5.2
- sensio/framework-extra-bundle: ~3.0|~4.0|~5.0
- symfony/framework-bundle: ~3.3|~4.0
Requires (Dev)
- friendsofsymfony/rest-bundle: ~2.2
- jms/serializer-bundle: ~2.2
- phpstan/phpstan: ~0.9
- symfony/browser-kit: ~3.3|~4.0
- symfony/expression-language: ~3.3|^4.0
- symfony/phpunit-bridge: ~3.3|~4.0
- symfony/twig-bundle: ~3.3|^4.0
- symfony/var-dumper: ~3.3|~4.0
- symfony/yaml: ~3.3|~4.0
README
TravisCI | StyleCI | Scrutinizer | 代码覆盖率 |
---|---|---|---|
简介
此bundle的主要目的是向Symfony框架引入一些“缺失”的功能。
将此bundle视为我为Symfony认证所做的准备的一部分。我只能通过实践而不是被动地阅读文档来学习。
bundle特性
bundle规则
- 默认情况下禁用每个功能。您只需启用您需要的。
- 无需在不需要时保留事件监听器。
- 提供合理的默认值和广泛的定制可能性。
功能
GET方法覆盖
启用此功能将允许您使用类似 http://myapp.com/mypath?_method=DELETE
或 PUT
的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
配置
配置参考可以在这里找到。