Added framework.trusted_proxies and framework.trusted_headers configuration options
Deprecated the public form.factory, form.type.file, translator, security.csrf.token_manager, serializer,
cache_clearer, filesystem and validator services to private.
Added TemplateAwareDataCollectorInterface and AbstractDataCollector to simplify custom data collector creation and leverage autoconfiguration
Add cache.adapter.redis_tag_aware tag to use RedisCacheAwareAdapter
added framework.http_client.retry_failing configuration tree
added assertCheckboxChecked() and assertCheckboxNotChecked() in WebTestCase
added assertFormValue() and assertNoFormValue() in WebTestCase
Added "--as-tree=3" option to translation:update command to dump messages as a tree-like structure. The given value defines the level where to switch to inline YAML
Deprecated the lock.RESOURCE_NAME and lock.RESOURCE_NAME.store services and the lock, LockInterface, lock.store and PersistingStoreInterface aliases, use lock.RESOURCE_NAME.factory, lock.factory or LockFactory instead.
5.1.0
Removed --no-backup option from translation:update command (broken since 5.0.0)
Added link to source for controllers registered as named services
Added link to source on controller on router:match/debug:router (when framework.ide is configured)
Added the framework.router.default_uri configuration option to configure the default RequestContext
Made MicroKernelTrait::configureContainer() compatible with ContainerConfigurator
Added a new mailer.message_bus option to configure or disable the message bus to use to send mails.
Added flex-compatible default implementation for MicroKernelTrait::registerBundles()
Deprecated passing a RouteCollectionBuilder to MicroKernelTrait::configureRoutes(), type-hint RoutingConfigurator instead
The TemplateController now accepts context argument
Deprecated not setting the "framework.router.utf8" configuration option as it will default to true in Symfony 6.0
Added tag routing.expression_language_function to define functions available in route conditions
Added debug:container --deprecations option to see compile-time deprecations.
Made BrowserKitAssertionsTrait report the original error message in case of a failure
Added ability for config:dump-reference and debug:config to dump and debug kernel container extension configuration.
Deprecated session.attribute_bag service and session.flash_bag service.
5.0.0
Removed support to load translation resources from the legacy directories src/Resources/translations/ and src/Resources/<BundleName>/translations/
Removed ControllerNameParser.
Removed ResolveControllerNameSubscriber
Removed support for bundle:controller:action to reference controllers. Use serviceOrFqcn::method instead
Removed support for PHP templating, use Twig instead
Removed Controller, use AbstractController instead
Removed Client, use KernelBrowser instead
Removed ContainerAwareCommand, use dependency injection instead
Removed the validation.strict_email option, use validation.email_validation_mode instead
Removed the cache.app.simple service and its corresponding PSR-16 autowiring alias
Removed cache-related compiler passes and RequestDataCollector
Removed the translator.selector and session.save_listener services
Removed SecurityUserValueResolver, use UserValueResolver instead
Removed routing.loader.service.
Service route loaders must be tagged with routing.route_loader.
Added slugger service and SluggerInterface alias
Removed the lock.store.flock, lock.store.semaphore, lock.store.memcached.abstract and lock.store.redis.abstract services.
Removed the router.cache_class_prefix parameter.
4.4.0
Added lint:container command to check that services wiring matches type declarations
Added MailerAssertionsTrait
Deprecated support for templating engine in TemplateController, use Twig instead
Deprecated the $parser argument of ControllerResolver::__construct() and DelegatingLoader::__construct()
Deprecated the controller_name_converter and resolve_controller_name_subscriber services
The ControllerResolver and DelegatingLoader classes have been marked as final
Added support for configuring chained cache pools
Deprecated calling WebTestCase::createClient() while a kernel has been booted, ensure the kernel is shut down before calling the method
Deprecated routing.loader.service, use routing.loader.container instead.
Not tagging service route loaders with routing.route_loader has been deprecated.
Overriding the methods KernelTestCase::tearDown() and WebTestCase::tearDown() without the void return-type is deprecated.
Added new error_controller configuration to handle system exceptions
Added sort option for translation:update command.
[BC Break] The framework.messenger.routing.senders config key is not deeply merged anymore.
Added secrets:* commands to deal with secrets seamlessly.
Made framework.session.handler_id accept a DSN
Marked the RouterDataCollector class as @final.
[BC Break] The framework.messenger.buses.<name>.middleware config key is not deeply merged anymore.
Moved MailerAssertionsTrait in KernelTestCase
4.3.0
Deprecated the framework.templating option, configure the Twig bundle instead.
Added WebTestAssertionsTrait (included by default in WebTestCase)
Renamed Client to KernelBrowser
Not passing the project directory to the constructor of the AssetsInstallCommand is deprecated. This argument will
be mandatory in 5.0.
Deprecated the "Psr\SimpleCache\CacheInterface" / "cache.app.simple" service, use "Symfony\Contracts\Cache\CacheInterface" / "cache.app" instead
Added the ability to specify a custom serializer option for each
transport underframework.messenger.transports.
Added the RegisterLocaleAwareServicesPass and configured the LocaleAwareListener
[BC Break] When using Messenger, the default transport changed from
using Symfony's serializer service to use PhpSerializer, which uses
PHP's native serialize() and unserialize() functions. To use the
original serialization method, set the framework.messenger.default_serializer
config option to messenger.transport.symfony_serializer. Or set the
serializer option under one specific transport.
[BC Break] The framework.messenger.serializer config key changed to
framework.messenger.default_serializer, which holds the string service
id and framework.messenger.symfony_serializer, which configures the
options if you're using Symfony's serializer.
[BC Break] Removed the framework.messenger.routing.send_and_handle configuration.
Instead of setting it to true, configure a SyncTransport and route messages to it.
Added information about deprecated aliases in debug:autowiring
Added php ini session options sid_length and sid_bits_per_character
to the session section of the configuration
Added support for Translator paths, Twig paths in translation commands.
Added support for PHP files with translations in translation commands.
Added support for boolean container parameters within routes.
Added the messenger:setup-transports command to setup messenger transports
Added a InMemoryTransport to Messenger. Use it with a DSN starting with in-memory://.
Added cache:pool:list command to list all available cache pools.
4.2.0
Added a AbstractController::addLink() method to add Link headers to the current response
Allowed configuring taggable cache pools via a new framework.cache.pools.tags option (bool|service-id)
Allowed configuring PDO-based cache pools via a new cache.adapter.pdo abstract service
Deprecated auto-injection of the container in AbstractController instances, register them as service subscribers instead
Deprecated processing of services tagged security.expression_language_provider in favor of a new AddExpressionLanguageProvidersPass in SecurityBundle.
Deprecated the Symfony\Bundle\FrameworkBundle\Controller\Controller class in favor of Symfony\Bundle\FrameworkBundle\Controller\AbstractController.
Enabled autoconfiguration for Psr\Log\LoggerAwareInterface
Added new "auto" mode for framework.session.cookie_secure to turn it on when HTTPS is used
Removed the framework.messenger.encoder and framework.messenger.decoder options. Use the framework.messenger.serializer.id option to replace the Messenger serializer.
Deprecated the ContainerAwareCommand class in favor of Symfony\Component\Console\Command\Command
Made debug:container and debug:autowiring ignore backslashes in service ids
Deprecated the Templating\Helper\TranslatorHelper::transChoice() method, use the trans() one instead with a %count% parameter
Deprecated CacheCollectorPass. Use Symfony\Component\Cache\DependencyInjection\CacheCollectorPass instead.
Deprecated CachePoolClearerPass. Use Symfony\Component\Cache\DependencyInjection\CachePoolClearerPass instead.
Deprecated CachePoolPass. Use Symfony\Component\Cache\DependencyInjection\CachePoolPass instead.
Deprecated CachePoolPrunerPass. Use Symfony\Component\Cache\DependencyInjection\CachePoolPrunerPass instead.
Deprecated support for legacy translations directories src/Resources/translations/ and src/Resources/<BundleName>/translations/, use translations/ instead.
Deprecated support for the legacy directory structure in translation:update and debug:translation commands.
4.1.0
Allowed to pass an optional LoggerInterface $logger instance to the Router
Added a new parameter_bag service with related autowiring aliases to access parameters as-a-service
Allowed the Router to work with any PSR-11 container
Added option in workflow dump command to label graph with a custom label
Using a RouterInterface that does not implement the WarmableInterface is deprecated.
Warming up a router in RouterCacheWarmer that does not implement the WarmableInterface is deprecated and will not
be supported anymore in 5.0.
The RequestDataCollector class has been deprecated. Use the Symfony\Component\HttpKernel\DataCollector\RequestDataCollector class instead.
The RedirectController class allows for 307/308 HTTP status codes
Deprecated bundle:controller:action syntax to reference controllers. Use serviceOrFqcn::method instead where serviceOrFqcn
is either the service ID or the FQCN of the controller.
made Translator::__construct()$defaultLocale argument required
removed SessionListener, TestSessionListener
Removed cache:clear warmup part along with the --no-optional-warmers option
Removed core form types services registration when unnecessary
Removed framework.serializer.cache option and serializer.mapping.cache.apc, serializer.mapping.cache.doctrine.apc services
Removed ConstraintValidatorFactory
Removed class parameters related to routing
Removed absolute template paths support in the template name parser
Removed support of the KERNEL_DIR environment variable with KernelTestCase::getKernelClass().
Removed the KernelTestCase::getPhpUnitXmlDir() and KernelTestCase::getPhpUnitCliConfigArgument() methods.
Removed the "framework.validation.cache" configuration option. Configure the "cache.validator" service under "framework.cache.pools" instead.
Removed PhpStringTokenParser, use Symfony\Component\Translation\Extractor\PhpStringTokenParser instead.
Removed PhpExtractor, use Symfony\Component\Translation\Extractor\PhpExtractor instead.
Removed the use_strict_mode session option, it's is now enabled by default
3.4.0
Added translator.default_path option and parameter
Session use_strict_mode is now enabled by default and the corresponding option has been deprecated
Made the cache:clear command to not clear "app" PSR-6 cache pools anymore,
but to still clear "system" ones; use the cache:pool:clear command to clear "app" pools instead
Always register a minimalist logger that writes in stderr
Deprecated profiler.matcher option
Added support for EventSubscriberInterface on MicroKernelTrait
Removed doctrine/cache from the list of required dependencies in composer.json
Deprecated validator.mapping.cache.doctrine.apc service
The symfony/stopwatch dependency has been removed, require it via composer
require symfony/stopwatch in your dev environment.
Deprecated using the KERNEL_DIR environment variable with KernelTestCase::getKernelClass().
Deprecated the KernelTestCase::getPhpUnitXmlDir() and KernelTestCase::getPhpUnitCliConfigArgument() methods.
Deprecated AddCacheClearerPass, use tagged iterator arguments instead.
Deprecated AddCacheWarmerPass, use tagged iterator arguments instead.
Deprecated TranslationDumperPass, use
Symfony\Component\Translation\DependencyInjection\TranslationDumperPass instead
Deprecated TranslationExtractorPass, use
Symfony\Component\Translation\DependencyInjection\TranslationExtractorPass instead
Deprecated TranslatorPass, use
Symfony\Component\Translation\DependencyInjection\TranslatorPass instead
Added command attribute to the console.command tag which takes the command
name as value, using it makes the command lazy
Added cache:pool:prune command to allow manual stale cache item pruning of supported PSR-6 and PSR-16 cache pool
implementations
Deprecated Symfony\Bundle\FrameworkBundle\Translation\TranslationLoader, use
Symfony\Component\Translation\Reader\TranslationReader instead
Deprecated translation.loader service, use translation.reader instead
AssetsInstallCommand::__construct() now takes an instance of
Symfony\Component\Filesystem\Filesystem as first argument
CacheClearCommand::__construct() now takes an instance of
Symfony\Component\HttpKernel\CacheClearer\CacheClearerInterface as
first argument
CachePoolClearCommand::__construct() now takes an instance of
Symfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer as
first argument
EventDispatcherDebugCommand::__construct() now takes an instance of
Symfony\Component\EventDispatcher\EventDispatcherInterface as
first argument
RouterDebugCommand::__construct() now takes an instance of
Symfony\Component\Routing\RouterInterface as
first argument
RouterMatchCommand::__construct() now takes an instance of
Symfony\Component\Routing\RouterInterface as
first argument
TranslationDebugCommand::__construct() now takes an instance of
Symfony\Component\Translation\TranslatorInterface as
first argument
TranslationUpdateCommand::__construct() now takes an instance of
Symfony\Component\Translation\TranslatorInterface as
first argument
AssetsInstallCommand, CacheClearCommand, CachePoolClearCommand,
EventDispatcherDebugCommand, RouterDebugCommand, RouterMatchCommand,
TranslationDebugCommand, TranslationUpdateCommand, XliffLintCommand
and YamlLintCommand classes have been marked as final
Added asset.request_context.base_path and asset.request_context.secure parameters
to provide a default request context in case the stack is empty (similar to router.request_context.* parameters)
Display environment variables managed by Dotenv in AboutCommand
3.3.0
Not defining the type option of the framework.workflows.* configuration entries is deprecated.
The default value will be state_machine in Symfony 4.0.
Deprecated the CompilerDebugDumpPass class
Deprecated the "framework.trusted_proxies" configuration option and the corresponding "kernel.trusted_proxies" parameter
Added a new version strategy option called "json_manifest_path"
that allows you to use the JsonManifestVersionStrategy.
Added Symfony\Bundle\FrameworkBundle\Controller\AbstractController. It provides
the same helpers as the Controller class, but does not allow accessing the dependency
injection container, in order to encourage explicit dependency declarations.
Added support for the controller.service_arguments tag, for injecting services into controllers' actions
Changed default configuration for
assets/forms/validation/translation/serialization/csrf from canBeEnabled() to
canBeDisabled() when Flex is used
The server:* commands and their associated router files were moved to WebServerBundle
Translation related services are not loaded anymore when the framework.translator option
is disabled.
Added GlobalVariables::getToken()
Deprecated Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddConsoleCommandPass. Use Symfony\Component\Console\DependencyInjection\AddConsoleCommandPass instead.
Added configurable paths for validation files
Deprecated SerializerPass, use Symfony\Component\Serializer\DependencyInjection\SerializerPass instead
Deprecated FormPass, use Symfony\Component\Form\DependencyInjection\FormPass instead
Deprecated SessionListener
Deprecated TestSessionListener
Deprecated Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\ConfigCachePass.
Use tagged iterator arguments instead.
Deprecated PropertyInfoPass, use Symfony\Component\PropertyInfo\DependencyInjection\PropertyInfoPass instead
Deprecated ControllerArgumentValueResolverPass. Use
Symfony\Component\HttpKernel\DependencyInjection\ControllerArgumentValueResolverPass instead
Deprecated RoutingResolverPass, use Symfony\Component\Routing\DependencyInjection\RoutingResolverPass instead
[BC BREAK] The server:run, server:start, server:stop and
server:status console commands have been moved to a dedicated bundle.
Require symfony/web-server-bundle in your composer.json and register
Symfony\Bundle\WebServerBundle\WebServerBundle in your AppKernel to use them.
Added $defaultLocale as 3rd argument of Translator::__construct()
making Translator works with any PSR-11 container
Added framework.serializer.mapping config option allowing to define custom
serialization mapping files and directories
Deprecated AddValidatorInitializersPass, use
Symfony\Component\Validator\DependencyInjection\AddValidatorInitializersPass instead
Deprecated AddConstraintValidatorsPass, use
Symfony\Component\Validator\DependencyInjection\AddConstraintValidatorsPass instead
Deprecated ValidateWorkflowsPass, use
Symfony\Component\Workflow\DependencyInjection\ValidateWorkflowsPass instead
Deprecated ConstraintValidatorFactory, use
Symfony\Component\Validator\ContainerConstraintValidatorFactory instead.
Deprecated PhpStringTokenParser, use
Symfony\Component\Translation\Extractor\PhpStringTokenParser instead.
Deprecated PhpExtractor, use
Symfony\Component\Translation\Extractor\PhpExtractor instead.
3.2.0
Removed doctrine/annotations from the list of required dependencies in composer.json
Removed symfony/security-core and symfony/security-csrf from the list of required dependencies in composer.json
Removed symfony/templating from the list of required dependencies in composer.json
Removed symfony/translation from the list of required dependencies in composer.json
Removed symfony/asset from the list of required dependencies in composer.json
The Resources/public/images/* files have been removed.
The Resources/public/css/*.css files have been removed (they are now inlined in TwigBundle).
Added possibility to prioritize form type extensions with 'priority' attribute on tags form.type_extension
3.1.0
Added Controller::json to simplify creating JSON responses when using the Serializer component
Deprecated absolute template paths support in the template name parser
Deprecated using core form types without dependencies as services
The framework.serializer.cache option and the service serializer.mapping.cache.apc have been
deprecated. APCu should now be automatically used when available.
3.0.0
removed validator.api parameter
removed alias option of the form.type tag
2.8.0
Deprecated the alias option of the form.type_extension tag in favor of the
extended_type/extended-type option
Deprecated the alias option of the form.type tag
Deprecated the Shell
2.7.0
Added possibility to extract translation messages from a file or files besides extracting from a directory
Added TranslationsCacheWarmer to create catalogues at warmup
2.6.0
Added helper commands (server:start, server:stop and server:status) to control the built-in web
server in the background
Added Controller::isCsrfTokenValid helper
Added configuration for the PropertyAccess component
Added Controller::redirectToRoute helper
Added Controller::addFlash helper
Added Controller::isGranted helper
Added Controller::denyAccessUnlessGranted helper
Deprecated app.security in twig as app.user and is_granted() are already available
2.5.0
Added translation:debug command
Added --no-backup option to translation:update command
Added config:debug command
Added yaml:lint command
Deprecated the RouterApacheDumperCommand which will be removed in Symfony 3.0.
2.4.0
allowed multiple IP addresses in profiler matcher settings
added stopwatch helper to time templates with the WebProfilerBundle
added service definition for "security.secure_random" service
added service definitions for the new Security CSRF sub-component
2.3.0
[BC BREAK] added a way to disable the profiler (when disabling the profiler, it is now completely removed)
To get the same "disabled" behavior as before, set enabled to true and collect to false
[BC BREAK] the Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\RegisterKernelListenersPass was moved
to Component\HttpKernel\DependencyInjection\RegisterListenersPass
added ControllerNameParser::build() which converts a controller short notation (a:b:c) to a class::method notation
added possibility to run PHP built-in server in production environment
added possibility to load the serializer component in the service container
added route debug information when using the router:match command
added TimedPhpEngine
added --clean option to the translation:update command
added http_method_override option
added support for default templates per render tag
added FormHelper::form(), FormHelper::start() and FormHelper::end()
deprecated FormHelper::enctype() in favor of FormHelper::start()
RedirectController actions now receive the Request instance via the method signature.
2.2.0
added a new uri_signer service to help sign URIs
deprecated Symfony\Bundle\FrameworkBundle\HttpKernel::render() and Symfony\Bundle\FrameworkBundle\HttpKernel::forward()
deprecated the Symfony\Bundle\FrameworkBundle\HttpKernel class in favor of Symfony\Component\HttpKernel\DependencyInjection\ContainerAwareHttpKernel
added support for adding new HTTP content rendering strategies (like ESI and Hinclude)
in the DIC via the kernel.fragment_renderer tag
[BC BREAK] restricted the Symfony\Bundle\FrameworkBundle\HttpKernel::render() method to only accept URIs or ControllerReference instances
Symfony\Bundle\FrameworkBundle\HttpKernel::render() method signature changed and the first argument
must now be a URI or a ControllerReference instance (the generateInternalUri() method was removed)
The internal routes (Resources/config/routing/internal.xml) have been removed and replaced with a listener (Symfony\Component\HttpKernel\EventListener\FragmentListener)
The render method of the actions templating helper signature and arguments changed
replaced Symfony\Bundle\FrameworkBundle\Controller\TraceableControllerResolver by Symfony\Component\HttpKernel\Controller\TraceableControllerResolver
replaced Symfony\Component\HttpKernel\Debug\ContainerAwareTraceableEventDispatcher by Symfony\Component\HttpKernel\Debug\TraceableEventDispatcher
added Client::enableProfiler()
a new parameter has been added to the DIC: router.request_context.base_url
You can customize it for your functional tests or for generating URLs with
the right base URL when your are in the CLI context.
added support for default templates per render tag
2.1.0
moved the translation files to the Form and Validator components
changed the default extension for XLIFF files from .xliff to .xlf
moved Symfony\Bundle\FrameworkBundle\ContainerAwareEventDispatcher to Symfony\Component\EventDispatcher\ContainerAwareEventDispatcher
moved Symfony\Bundle\FrameworkBundle\Debug\TraceableEventDispatcher to Symfony\Component\EventDispatcher\ContainerAwareTraceableEventDispatcher
added a router:match command
added a config:dump-reference command
added a server:run command
added kernel.event_subscriber tag
added a way to create relative symlinks when running assets:install command (--relative option)
added Controller::getUser()
[BC BREAK] assets_base_urls and base_urls merging strategy has changed
changed the default profiler storage to use the filesystem instead of SQLite
added support for placeholders in route defaults and requirements (replaced
by the value set in the service container)
added Filesystem component as a dependency
added support for hinclude (use standalone: 'js' in render tag)
session options: lifetime, path, domain, secure, httponly were deprecated.
Prefixed versions should now be used instead: cookie_lifetime, cookie_path,
cookie_domain, cookie_secure, cookie_httponly
[BC BREAK] following session options: 'lifetime', 'path', 'domain', 'secure',
'httponly' are now prefixed with cookie_ when dumped to the container
Added handler_id configuration under session key to represent session.handler
service, defaults to session.handler.native_file.
Added gc_maxlifetime, gc_probability, and gc_divisor to session
configuration. This means session garbage collection has a
gc_probability/gc_divisor chance of being run. The gc_maxlifetime defines
how long a session can idle for. It is different from cookie lifetime which
declares how long a cookie can be stored on the remote client.
Removed 'auto_start' configuration parameter from session config. The session will
start on demand.
[BC BREAK] TemplateNameParser::parseFromFilename() has been moved to a dedicated
parser: TemplateFilenameParser::parse().
[BC BREAK] Kernel parameters are replaced by their value wherever they appear
in Route patterns, requirements and defaults. Use '%%' as the escaped value for '%'.
[BC BREAK] Switched behavior of flash messages to expire flash messages on retrieval
using Symfony\Component\HttpFoundation\Session\Flash\FlashBag as opposed to on
next pageload regardless of whether they are displayed or not.