flyingcolours/common-bundle

常用代码的 Symfony Bundle

安装: 618

依赖: 0

建议者: 0

安全: 0

星标: 2

关注者: 3

分支: 1

类型:symfony-bundle


README

项目中使用的常用 Symfony 类

Version Build Status Coverage Status

安装

composer require flyingcolours/common-bundle "^0.2.0"

此版本与 Symfony 4.3 兼容,对于旧版本请检查 旧版本

组件

内容协商和模板解析监听器

Symfony 事件监听器,根据 "Accept" 头信息确定正确的响应内容类型。

# app/config/services.yml

parameters:

    priorities: [ 'application/json', 'text/html' ]

services:
        
    listener.template.resolver:
        class: FlyingColours\CommonBundle\Listener\TemplateResolverListener
        arguments: [ "@sensio_framework_extra.view.guesser" ]
        tags:
            - { name: kernel.event_listener, event: kernel.controller, method: onKernelController }
    
    listener.content.negotiation:
        class: FlyingColours\CommonBundle\Listener\ContentNegotiationListener
        arguments:
            $priorities: "%priorities%"
        tags:
            - { name: kernel.event_listener, event: kernel.view, method: onKernelView }

持久化 Memcached

如果您曾经遇到这里描述的问题 (链接),那么您应该使用这个类而不是默认的 Memcached。

# app/config/services.yml

services:

    memcached:
        class: FlyingColours\CommonBundle\Service\PersistentMemcached
        arguments:
            persistent_id: "%session_prefix%"
        calls:
            - [ addServer, [ "%memcached_host%", "%memcached_port%" ]]

    session.handler.memcached:
        class:     Symfony\Component\HttpFoundation\Session\Storage\Handler\MemcachedSessionHandler
        arguments: [ "@memcached", { prefix: "%session_prefix%", expiretime: "%session_expire%" }]

CORS 监听器

有关详细信息,请参阅 此页面

# app/config/services.yml

services:

    listener.cors.headers:
        class: FlyingColours\CommonBundle\Listener\CorsHeadersListener
        tags:
            - { name: kernel.event_listener, event: kernel.response, method: onKernelResponse }

如果您想实现快速 OPTIONS 处理程序而不创建特殊动作或控制器,可以添加额外的标签用于 kernel.request 事件。

# app/config/services.yml

services:

    listener.cors.headers:
        class: FlyingColours\CommonBundle\Listener\CorsHeadersListener
        tags:
            - { name: kernel.event_listener, event: kernel.response, method: onKernelResponse }
            - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest, priority: 33 }

要在内存缓存中使用,只需像 memcached 实现一样使用即可

services:
    cache.in_memory:
        class: FlyingColours\CommonBundle\Service\InMemoryCache