INTERNAL
"Core" бандл.
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 (или /config/packages/custom_arguments_resolvers.yaml для Wordpress).
Пример:
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-urlencodedcustom_arguments_resolvers.argument_resolver.set_container- пропихивание контейнера в контроллерcustom_arguments_resolvers.argument_resolver.ajax_call- проверка вызова на AJAXcustom_arguments_resolvers.argument_resolver.from_container- ресолвинг аргументов из контейнераcustom_arguments_resolvers.boot_trait- bootable traits (по аналоги 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' }Сервисы в делегированном контейнере должны быть публичными.
Делегированные контейнеры имеют приоритет. Если два одинаковых сервиса объявлены в основном и дополнительном контейнере, то в дело пойдет сервис из внешнего контейнера.