CHANGELOG.md 28 KB

CHANGELOG

5.2.0

  • Added framework.http_cache configuration tree
  • 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 framework.property_access.throw_exception_on_invalid_property_path config option.
  • 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.
  • Deprecated Symfony\Bundle\FrameworkBundle\Controller\ControllerNameParser
  • The container.service_locator tag of ServiceLocators is now autoconfigured.
  • Add the ability to search a route in debug:router.
  • Add the ability to use SameSite cookies for sessions.

4.0.0

  • The default type option of the framework.workflows.* configuration entries is state_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 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
  • Added Symfony\Component\HttpHernel\DataCollector\RequestDataCollector::onKernelResponse()
  • Added Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector
  • 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.