- 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 newAddExpressionLanguageProvidersPass
in SecurityBundle.
- Allowed to pass an optional
LoggerInterface $logger
instance to theRouter
- 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 theWarmableInterface
is deprecated. - Warming up a router in
RouterCacheWarmer
that does not implement theWarmableInterface
is deprecated and will not be supported anymore in 5.0. - The
RequestDataCollector
class has been deprecated. Use theSymfony\Component\HttpKernel\DataCollector\RequestDataCollector
class instead. - The
RedirectController
class allows for 307/308 HTTP status codes - Deprecated
bundle:controller:action
syntax to reference controllers. UseserviceOrFqcn::method
instead whereserviceOrFqcn
is either the service ID or the FQCN of the controller. - Deprecated
Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser
- The
container.service_locator
tag ofServiceLocator
s is now autoconfigured. - Add the ability to search a route in
debug:router
.
- The default
type
option of theframework.workflows.*
configuration entries isstate_machine
- removed
AddConsoleCommandPass
,AddConstraintValidatorsPass
,AddValidatorInitializersPass
,CompilerDebugDumpPass
,ConfigCachePass
,ControllerArgumentValueResolverPass
,FormPass
,PropertyInfoPass
,RoutingResolverPass
,SerializerPass
,ValidateWorkflowsPass
- 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 andserializer.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 withKernelTestCase::getKernelClass()
. - Removed the
KernelTestCase::getPhpUnitXmlDir()
andKernelTestCase::getPhpUnitCliConfigArgument()
methods. - Removed the "framework.validation.cache" configuration option. Configure the "cache.validator" service under "framework.cache.pools" instead.
- Removed
PhpStringTokenParser
, useSymfony\Component\Translation\Extractor\PhpStringTokenParser
instead. - Removed
PhpExtractor
, useSymfony\Component\Translation\Extractor\PhpExtractor
instead. - Removed the
use_strict_mode
session option, it's is now enabled by default
- 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 thecache: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
onMicroKernelTrait
- Removed
doctrine/cache
from the list of required dependencies incomposer.json
- Deprecated
validator.mapping.cache.doctrine.apc
service - The
symfony/stopwatch
dependency has been removed, require it viacomposer require symfony/stopwatch
in yourdev
environment. - Deprecated using the
KERNEL_DIR
environment variable withKernelTestCase::getKernelClass()
. - Deprecated the
KernelTestCase::getPhpUnitXmlDir()
andKernelTestCase::getPhpUnitCliConfigArgument()
methods. - Deprecated
AddCacheClearerPass
, use tagged iterator arguments instead. - Deprecated
AddCacheWarmerPass
, use tagged iterator arguments instead. - Deprecated
TranslationDumperPass
, useSymfony\Component\Translation\DependencyInjection\TranslationDumperPass
instead - Deprecated
TranslationExtractorPass
, useSymfony\Component\Translation\DependencyInjection\TranslationExtractorPass
instead - Deprecated
TranslatorPass
, useSymfony\Component\Translation\DependencyInjection\TranslatorPass
instead - Added
command
attribute to theconsole.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
, useSymfony\Component\Translation\Reader\TranslationReader
instead - Deprecated
translation.loader
service, usetranslation.reader
instead AssetsInstallCommand::__construct()
now takes an instance ofSymfony\Component\Filesystem\Filesystem
as first argumentCacheClearCommand::__construct()
now takes an instance ofSymfony\Component\HttpKernel\CacheClearer\CacheClearerInterface
as first argumentCachePoolClearCommand::__construct()
now takes an instance ofSymfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer
as first argumentEventDispatcherDebugCommand::__construct()
now takes an instance ofSymfony\Component\EventDispatcher\EventDispatcherInterface
as first argumentRouterDebugCommand::__construct()
now takes an instance ofSymfony\Component\Routing\RouterInterface
as first argumentRouterMatchCommand::__construct()
now takes an instance ofSymfony\Component\Routing\RouterInterface
as first argumentTranslationDebugCommand::__construct()
now takes an instance ofSymfony\Component\Translation\TranslatorInterface
as first argumentTranslationUpdateCommand::__construct()
now takes an instance ofSymfony\Component\Translation\TranslatorInterface
as first argumentAssetsInstallCommand
,CacheClearCommand
,CachePoolClearCommand
,EventDispatcherDebugCommand
,RouterDebugCommand
,RouterMatchCommand
,TranslationDebugCommand
,TranslationUpdateCommand
,XliffLintCommand
andYamlLintCommand
classes have been marked as final- Added
asset.request_context.base_path
andasset.request_context.secure
parameters to provide a default request context in case the stack is empty (similar torouter.request_context.*
parameters) - Display environment variables managed by
Dotenv
inAboutCommand
- Not defining the
type
option of theframework.workflows.*
configuration entries is deprecated. The default value will bestate_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 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 theController
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()
tocanBeDisabled()
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
. UseSymfony\Component\Console\DependencyInjection\AddConsoleCommandPass
instead. - Added configurable paths for validation files
- Deprecated
SerializerPass
, useSymfony\Component\Serializer\DependencyInjection\SerializerPass
instead - Deprecated
FormPass
, useSymfony\Component\Form\DependencyInjection\FormPass
instead - Deprecated
SessionListener
- Deprecated
TestSessionListener
- Deprecated
Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\ConfigCachePass
. Use tagged iterator arguments instead. - Deprecated
PropertyInfoPass
, useSymfony\Component\PropertyInfo\DependencyInjection\PropertyInfoPass
instead - Deprecated
ControllerArgumentValueResolverPass
. UseSymfony\Component\HttpKernel\DependencyInjection\ControllerArgumentValueResolverPass
instead - Deprecated
RoutingResolverPass
, useSymfony\Component\Routing\DependencyInjection\RoutingResolverPass
instead - [BC BREAK] The
server:run
,server:start
,server:stop
andserver:status
console commands have been moved to a dedicated bundle. Requiresymfony/web-server-bundle
in your composer.json and registerSymfony\Bundle\WebServerBundle\WebServerBundle
in your AppKernel to use them. - Added
$defaultLocale
as 3rd argument ofTranslator::__construct()
makingTranslator
works with any PSR-11 container - Added
framework.serializer.mapping
config option allowing to define custom serialization mapping files and directories - Deprecated
AddValidatorInitializersPass
, useSymfony\Component\Validator\DependencyInjection\AddValidatorInitializersPass
instead - Deprecated
AddConstraintValidatorsPass
, useSymfony\Component\Validator\DependencyInjection\AddConstraintValidatorsPass
instead - Deprecated
ValidateWorkflowsPass
, useSymfony\Component\Workflow\DependencyInjection\ValidateWorkflowsPass
instead - Deprecated
ConstraintValidatorFactory
, useSymfony\Component\Validator\ContainerConstraintValidatorFactory
instead. - Deprecated
PhpStringTokenParser
, useSymfony\Component\Translation\Extractor\PhpStringTokenParser
instead. - Deprecated
PhpExtractor
, useSymfony\Component\Translation\Extractor\PhpExtractor
instead.
- Removed
doctrine/annotations
from the list of required dependencies incomposer.json
- Removed
symfony/security-core
andsymfony/security-csrf
from the list of required dependencies incomposer.json
- Removed
symfony/templating
from the list of required dependencies incomposer.json
- Removed
symfony/translation
from the list of required dependencies incomposer.json
- Removed
symfony/asset
from the list of required dependencies incomposer.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 tagsform.type_extension
- 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
- Added
Symfony\Component\HttpHernel\DataCollector\RequestDataCollector::onKernelResponse()
- Added
Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector
- The
framework.serializer.cache
option and the serviceserializer.mapping.cache.apc
have been deprecated. APCu should now be automatically used when available.
- removed
validator.api
parameter - removed
alias
option of theform.type
tag
- Deprecated the
alias
option of theform.type_extension
tag in favor of theextended_type
/extended-type
option - Deprecated the
alias
option of theform.type
tag - Deprecated the Shell
- Added possibility to extract translation messages from a file or files besides extracting from a directory
- Added
TranslationsCacheWarmer
to create catalogues at warmup
- Added helper commands (
server:start
,server:stop
andserver: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 asapp.user
andis_granted()
are already available
- Added
translation:debug
command - Added
--no-backup
option totranslation:update
command - Added
config:debug
command - Added
yaml:lint
command - Deprecated the
RouterApacheDumperCommand
which will be removed in Symfony 3.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
- [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
totrue
andcollect
tofalse
- [BC BREAK] the
Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\RegisterKernelListenersPass
was moved toComponent\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 thetranslation: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.
- added a new
uri_signer
service to help sign URIs - deprecated
Symfony\Bundle\FrameworkBundle\HttpKernel::render()
andSymfony\Bundle\FrameworkBundle\HttpKernel::forward()
- deprecated the
Symfony\Bundle\FrameworkBundle\HttpKernel
class in favor ofSymfony\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 instancesSymfony\Bundle\FrameworkBundle\HttpKernel::render()
method signature changed and the first argument must now be a URI or a ControllerReference instance (thegenerateInternalUri()
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 theactions
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
- 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 undersession
key to representsession.handler
service, defaults tosession.handler.native_file
. - Added
gc_maxlifetime
,gc_probability
, andgc_divisor
to session configuration. This means session garbage collection has agc_probability
/gc_divisor
chance of being run. Thegc_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.