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 兼容,对于之前的版本,请查看 之前的版本

组件

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

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

# 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