proklung / core-argument-resolvers-bundle
自定义Symfony的核心参数解析器
1.1.5
2021-08-08 19:23 UTC
Requires
- php: >=7.3 || ^8.0
- doctrine/annotations: ^1.10
- proklung/base-exception: ^1.0
- symfony/config: ^4.4 || ^5.0
- symfony/dependency-injection: ^4.4 || ^5.0
- symfony/event-dispatcher: ^4.4 || ^5.0
- symfony/framework-bundle: ^4.4 || ^5.0
- symfony/http-kernel: ^4.4 || ^5.0
- symfony/polyfill-php80: ^1.20
- symfony/security-csrf: ^4.4 || ^5.0
- symfony/serializer: ^4.4 || ^5.0
Requires (Dev)
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' }
委托容器中的服务必须是公开的。
委托容器具有优先级。如果主容器和附加容器中声明了相同的服务,则将使用外部容器中的服务。