proklung/core-argument-resolvers-bundle

自定义Symfony的核心参数解析器

1.1.5 2021-08-08 19:23 UTC

This package is auto-updated.

Last update: 2024-09-09 02:49:21 UTC


README

内部

"核心"包。

安装

composer.json

    "repositories": [
        {
            "type": "git",
            "url": "https://github.com/proklung/core.argument.resolvers.bundle"
        }
    ]
composer require proklung/core-argument-resolvers-bundle

配置文件

local/packages/custom_arguments_resolvers.yaml地址下(或对于Wordpress,使用/config/packages/custom_arguments_resolvers.yaml)。

示例

custom_arguments_resolvers:
  defaults:
    enabled: true
  params:
    # Какие конкретно листенеры запретить (ID сервиса).
    disabled_resolvers:
      # - custom_arguments_resolvers.argument_resolver.ajax_call
      - custom_arguments_resolvers.argument_resolver.csrf_token_checker_annotation
    # Обрабатывать только контроллеры, не зарегистрированные сервисами.
    process_only_non_service_controller: false
    # Классы контроллеров, подлежащие обработке.
    classes_controllers:
      - 'Symfony\Bundle\FrameworkBundle\Controller\AbstractController'
      - 'Symfony\Bundle\FrameworkBundle\Controller\Controller'

组件

  • custom_arguments_resolvers.argument_resolver.set_session - 为所有控制器请求设置Symfony会话
  • custom_arguments_resolvers.argument_resolver.validator_csrf_token - CSRF令牌验证器
  • custom_arguments_resolvers.argument_resolver.security_token_checker - 安全令牌检查(通过SecurityTokenTrait特质)
  • custom_arguments_resolvers.argument_resolver.form_url_encoded - 处理x-www-form-urlencoded请求
  • custom_arguments_resolvers.argument_resolver.set_container - 将容器注入控制器
  • custom_arguments_resolvers.argument_resolver.ajax_call - 检查AJAX调用
  • custom_arguments_resolvers.argument_resolver.from_container - 从容器中解析参数
  • custom_arguments_resolvers.boot_trait - 可启动特质(类似于c
  • custom_arguments_resolvers.argument_resolver.user_permission_check - 检查路由权限

其他

路由缓存

routes.yaml

foo_controller:
  path: /foo/bar/
  methods: GET
  controller: 'Local\Controllers\FooController::action'
  defaults:
    _cacheble: true # Кэшировать
    _cacher: 'example.cacher' # Сервис-кэшер, реализующий интерфейс Symfony\Contracts\Cache\CacheInterface

限制

  • 仅缓存GET请求。

从"委托"容器中解析控制器参数

委托容器 - 任何返回Symfony\Component\DependencyInjection\ContainerInterface的服务,并包含返回完整容器的服务。

为什么?

为了能够自动从模块、插件等地方提取容器中的参数。

配置
  module_notifier_container:
    class: Symfony\Component\DependencyInjection\ContainerInterface
    factory: ['Proklung\Notifier\DI\Services', 'getInstance']
    tags:
      - { name: 'delegated.container' }

委托容器中的服务必须是公开的。

委托容器具有优先级。如果主容器和附加容器中声明了相同的服务,则将使用外部容器中的服务。