Skip to content

Latest commit

 

History

History
687 lines (626 loc) · 46.5 KB

CHANGELOG.md

File metadata and controls

687 lines (626 loc) · 46.5 KB

CHANGELOG

7.2

  • Add support for --sort option when extracting translations with translation:extract command and --force option
  • Add support for setting headers with Symfony\Bundle\FrameworkBundle\Controller\TemplateController
  • Add --resolve-env-vars option to lint:container command
  • Derivate kernel.secret from the decryption secret when its env var is not defined
  • Make the config/ directory optional in MicroKernelTrait, add support for service arguments in the invokable Kernel class, and register FrameworkBundle by default when the bundles.php file is missing
  • [BC BREAK] The secrets:decrypt-to-local command terminates with a non-zero exit code when a secret could not be read
  • Deprecate making cache.app adapter taggable, use the cache.app.taggable adapter instead
  • Enable json_decode_detailed_errors in the default serializer context in debug mode by default when seld/jsonlint is installed
  • Register Symfony\Component\Serializer\NameConverter\SnakeCaseToCamelCaseNameConverter as a service named serializer.name_converter.snake_case_to_camel_case if available
  • Add framework.csrf_protection.stateless_token_ids, .cookie_name, and .check_header options to use stateless headers/cookies-based CSRF protection
  • Add framework.form.csrf_protection.field_attr option
  • Deprecate session.sid_length and session.sid_bits_per_character config options
  • Add the ability to use an existing service as a lock/semaphore resource
  • Add support for configuring multiple serializer instances via the configuration
  • Add support for SYMFONY_TRUSTED_PROXIES, SYMFONY_TRUSTED_HEADERS, SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER and SYMFONY_TRUSTED_HOSTS env vars
  • Add --no-fill option to translation:extract command

7.1

  • Add CheckAliasValidityPass to lint:container command
  • Add private_ranges as a shortcut for private IP address ranges to the trusted_proxies option
  • Mark classes ConfigBuilderCacheWarmer, Router, SerializerCacheWarmer, TranslationsCacheWarmer, Translator and ValidatorCacheWarmer as final
  • Move the Router cache_dir to kernel.build_dir
  • Deprecate the router.cache_dir config option
  • Add rate_limiter tags to rate limiter services
  • Add secrets:reveal command
  • Add rate_limiter option to http_client.default_options and http_client.scoped_clients
  • Attach the workflow's configuration to the workflow tag
  • Add the allowed_recipients option for mailer to allow some users to receive emails even if recipients is defined.
  • Reset env vars when resetting the container

7.0

  • Remove command translation:update, use translation:extract instead
  • Make the http_method_override config option default to false
  • Remove AbstractController::renderForm(), use render() instead
  • Remove the Symfony\Component\Serializer\Normalizer\ObjectNormalizer and Symfony\Component\Serializer\Normalizer\PropertyNormalizer autowiring aliases, type-hint against Symfony\Component\Serializer\Normalizer\NormalizerInterface or implement NormalizerAwareInterface instead
  • Remove the Http\Client\HttpClient service, use Psr\Http\Client\ClientInterface instead
  • Remove the integration of Doctrine annotations, use native attributes instead
  • Remove EnableLoggerDebugModePass, use argument $debug of HttpKernel's Logger instead
  • Remove AddDebugLogProcessorPass::configureLogger(), use HttpKernel's DebugLoggerConfigurator instead
  • Make the framework.handle_all_throwables config option default to true
  • Make the framework.php_errors.log config option default to true
  • Make the framework.session.cookie_secure config option default to auto
  • Make the framework.session.cookie_samesite config option default to lax
  • Make the framework.session.handler_id default to null if save_path is not set and to session.handler.native_file otherwise
  • Make the framework.uid.default_uuid_version config option default to 7
  • Make the framework.uid.time_based_uuid_version config option default to 7
  • Make the framework.validation.email_validation_mode config option default to html5
  • Remove the framework.validation.enable_annotations config option, use framework.validation.enable_attributes instead
  • Remove the framework.serializer.enable_annotations config option, use framework.serializer.enable_attributes instead
  • Remove the routing.loader.annotation service, use the routing.loader.attribute service instead
  • Remove the routing.loader.annotation.directory service, use the routing.loader.attribute.directory service instead
  • Remove the routing.loader.annotation.file service, use the routing.loader.attribute.file service instead
  • Remove AnnotatedRouteControllerLoader, use AttributeRouteControllerLoader instead
  • Remove AddExpressionLanguageProvidersPass, use Symfony\Component\Routing\DependencyInjection\AddExpressionLanguageProvidersPass instead
  • Remove DataCollectorTranslatorPass, use Symfony\Component\Translation\DependencyInjection\DataCollectorTranslatorPass instead
  • Remove LoggingTranslatorPass, use Symfony\Component\Translation\DependencyInjection\LoggingTranslatorPass instead
  • Remove WorkflowGuardListenerPass, use Symfony\Component\Workflow\DependencyInjection\WorkflowGuardListenerPass instead

6.4

  • Add HttpClientAssertionsTrait
  • Add AbstractController::renderBlock() and renderBlockView()
  • Add native return type to Translator and to Application::reset()
  • Deprecate the integration of Doctrine annotations, either uninstall the doctrine/annotations package or disable the integration by setting framework.annotations to false
  • Enable json_decode_detailed_errors context for Serializer by default if kernel.debug is true and the seld/jsonlint package is installed
  • Add DomCrawlerAssertionsTrait::assertAnySelectorTextContains(string $selector, string $text)
  • Add DomCrawlerAssertionsTrait::assertAnySelectorTextSame(string $selector, string $text)
  • Add DomCrawlerAssertionsTrait::assertAnySelectorTextNotContains(string $selector, string $text)
  • Deprecate EnableLoggerDebugModePass, use argument $debug of HttpKernel's Logger instead
  • Deprecate AddDebugLogProcessorPass::configureLogger(), use HttpKernel's DebugLoggerConfigurator instead
  • Deprecate not setting the framework.handle_all_throwables config option; it will default to true in 7.0
  • Deprecate not setting the framework.php_errors.log config option; it will default to true in 7.0
  • Deprecate not setting the framework.session.cookie_secure config option; it will default to auto in 7.0
  • Deprecate not setting the framework.session.cookie_samesite config option; it will default to lax in 7.0
  • Deprecate not setting either framework.session.handler_id or save_path config options; handler_id will default to null in 7.0 if save_path is not set and to session.handler.native_file otherwise
  • Deprecate not setting the framework.uid.default_uuid_version config option; it will default to 7 in 7.0
  • Deprecate not setting the framework.uid.time_based_uuid_version config option; it will default to 7 in 7.0
  • Deprecate not setting the framework.validation.email_validation_mode config option; it will default to html5 in 7.0
  • Deprecate framework.validation.enable_annotations, use framework.validation.enable_attributes instead
  • Deprecate framework.serializer.enable_annotations, use framework.serializer.enable_attributes instead
  • Add array $tokenAttributes = [] optional parameter to KernelBrowser::loginUser()
  • Add support for relative URLs in BrowserKit's redirect assertion
  • Change BrowserKitAssertionsTrait::getClient() to be protected
  • Deprecate the framework.asset_mapper.provider config option
  • Add --exclude option to the cache:pool:clear command
  • Add parameters deprecations to the output of debug:container command
  • Change framework.asset_mapper.importmap_polyfill from a URL to the name of an item in the importmap
  • Provide $buildDir when running CacheWarmer to build read-only resources
  • Add the global --profile option to the console to enable profiling commands
  • Deprecate the routing.loader.annotation service, use the routing.loader.attribute service instead
  • Deprecate the routing.loader.annotation.directory service, use the routing.loader.attribute.directory service instead
  • Deprecate the routing.loader.annotation.file service, use the routing.loader.attribute.file service instead
  • Deprecate AnnotatedRouteControllerLoader, use AttributeRouteControllerLoader instead
  • Deprecate AddExpressionLanguageProvidersPass, use Symfony\Component\Routing\DependencyInjection\AddExpressionLanguageProvidersPass instead
  • Deprecate DataCollectorTranslatorPass, use Symfony\Component\Translation\DependencyInjection\DataCollectorTranslatorPass instead
  • Deprecate LoggingTranslatorPass, use Symfony\Component\Translation\DependencyInjection\LoggingTranslatorPass instead
  • Deprecate WorkflowGuardListenerPass, use Symfony\Component\Workflow\DependencyInjection\WorkflowGuardListenerPass instead

6.3

  • Add extra option for http_client.default_options and http_client.scoped_client
  • Add DomCrawlerAssertionsTrait::assertSelectorCount(int $count, string $selector)
  • Allow to avoid limit definition in a RateLimiter configuration when using the no_limit policy
  • Add --format option to the debug:config command
  • Add support to pass namespace wildcard in framework.messenger.routing
  • Deprecate framework:exceptions tag, unwrap it and replace framework:exception tags' name attribute by class
  • Deprecate the notifier.logger_notification_listener service, use the notifier.notification_logger_listener service instead
  • Allow setting private services with the test container
  • Register alias for argument for workflow services with workflow name only
  • Configure the ErrorHandler on FrameworkBundle::boot()
  • Allow setting debug.container.dump to false to disable dumping the container to XML
  • Add framework.http_cache.skip_response_headers option
  • Display warmers duration on debug verbosity for cache:clear command
  • Add AbstractController::sendEarlyHints() to send HTTP Early Hints
  • Add autowiring aliases for Http\Client\HttpAsyncClient
  • Deprecate the Http\Client\HttpClient service, use Psr\Http\Client\ClientInterface instead
  • Add stop_worker_on_signals configuration option to messenger to define signals which would stop a worker
  • Add support for --all option to clear all cache pools with cache:pool:clear command
  • Add --show-aliases option to debug:router command

6.2

  • Add resolve-env option to debug:config command to display actual values of environment variables in dumped configuration
  • Add NotificationAssertionsTrait
  • Add option framework.handle_all_throwables to allow Symfony\Component\HttpKernel\HttpKernel to handle all kinds of Throwable
  • Make AbstractController::render() able to deal with forms and deprecate renderForm()
  • Deprecate the Symfony\Component\Serializer\Normalizer\ObjectNormalizer and Symfony\Component\Serializer\Normalizer\PropertyNormalizer autowiring aliases, type-hint against Symfony\Component\Serializer\Normalizer\NormalizerInterface or implement NormalizerAwareInterface instead
  • Add service usages list to the debug:container command output
  • Add service and alias deprecation message to debug:container [<name>] output
  • Tag all workflows services with workflow, those with type=workflow are tagged with workflow.workflow, and those with type=state_machine with workflow.state_machine
  • Add rate_limiter configuration option to messenger.transport to allow rate limited transports using the RateLimiter component
  • Remove @internal tag from secret vaults to allow them to be used directly outside the framework bundle and custom vaults to be added
  • Deprecate framework.form.legacy_error_messages config node
  • Add a framework.router.cache_dir configuration option to configure the default Router cache_dir option
  • Add option framework.messenger.buses.*.default_middleware.allow_no_senders to enable throwing when a message doesn't have a sender
  • Deprecate AbstractController::renderForm(), use render() instead
  • Deprecate FrameworkExtension::registerRateLimiter()

6.1

  • Add support for configuring semaphores
  • Environment variable SYMFONY_IDE is read by default when framework.ide config is not set
  • Load PHP configuration files by default in the MicroKernelTrait
  • Add cache:pool:invalidate-tags command
  • Add xliff support in addition to xlf for XliffFileDumper
  • Deprecate the reset_on_message config option. It can be set to true only and does nothing now
  • Add trust_x_sendfile_type_header option
  • Add support for first-class callable route controller in MicroKernelTrait
  • Add tag routing.condition_service to autoconfigure routing condition services
  • Automatically register kernel methods marked with the Symfony\Component\Routing\Annotation\Route attribute or annotation as controllers in MicroKernelTrait
  • Deprecate not setting the http_method_override config option. The default value will change to false in 7.0.
  • Add framework.profiler.collect_serializer_data config option, set it to true to enable the serializer data collector and profiler panel

6.0

  • Remove the session.storage alias and session.storage.* services, use the session.storage.factory alias and session.storage.factory.* services instead
  • Remove framework.session.storage_id configuration option, use the framework.session.storage_factory_id configuration option instead
  • Remove the session service and the SessionInterface alias, use the \Symfony\Component\HttpFoundation\Request::getSession() or the new \Symfony\Component\HttpFoundation\RequestStack::getSession() methods instead
  • Remove the session.attribute_bag service and session.flash_bag service
  • Remove 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
  • The form.factory, form.type.file, translator, security.csrf.token_manager, serializer, cache_clearer, filesystem and validator services are now private
  • Remove the output-format and xliff-version options from TranslationUpdateCommand
  • Remove has(), get(), getDoctrine()n and dispatchMessage() from AbstractController, use method/constructor injection instead
  • Make the "framework.router.utf8" configuration option default to true
  • Remove the AdapterInterface autowiring alias, use CacheItemPoolInterface instead
  • Make the profiler service private
  • Remove all other values than "none", "php_array" and "file" for framework.annotation.cache
  • Register workflow services as private
  • Remove support for passing a RouteCollectionBuilder to MicroKernelTrait::configureRoutes(), type-hint RoutingConfigurator instead
  • Remove the cache.adapter.doctrine service
  • Remove the framework.translator.enabled_locales config option, use framework.enabled_locales instead
  • Make the framework.messenger.reset_on_message configuration option default to true

5.4

  • Add set_locale_from_accept_language config option to automatically set the request locale based on the Accept-Language HTTP request header and the framework.enabled_locales config option
  • Add set_content_language_from_locale config option to automatically set the Content-Language HTTP response header based on the Request locale
  • Deprecate the framework.translator.enabled_locales, use framework.enabled_locales instead
  • Add autowiring alias for HttpCache\StoreInterface
  • Add the ability to enable the profiler using a request query parameter, body parameter or attribute
  • Deprecate the AdapterInterface autowiring alias, use CacheItemPoolInterface instead
  • Deprecate the public profiler service to private
  • Deprecate get(), has(), getDoctrine(), and dispatchMessage() in AbstractController, use method/constructor injection instead
  • Deprecate the cache.adapter.doctrine service
  • Add support for resetting container services after each messenger message
  • Add configureContainer(), configureRoutes(), getConfigDir() and getBundlesPath() to MicroKernelTrait
  • Add support for configuring log level, and status code by exception class
  • Bind the default_context parameter onto serializer's encoders and normalizers
  • Add support for statusCode default parameter when loading a template directly from route using the Symfony\Bundle\FrameworkBundle\Controller\TemplateController controller
  • Deprecate translation:update command, use translation:extract instead
  • Add PhpStanExtractor support for the PropertyInfo component
  • Add cache.adapter.doctrine_dbal service to replace cache.adapter.pdo when a Doctrine DBAL connection is used.

5.3

  • Deprecate the session.storage alias and session.storage.* services, use the session.storage.factory alias and session.storage.factory.* services instead
  • Deprecate the framework.session.storage_id configuration option, use the framework.session.storage_factory_id configuration option instead
  • Deprecate the session service and the SessionInterface alias, use the Request::getSession() or the new RequestStack::getSession() methods instead
  • Add AbstractController::renderForm() to render a form and set the appropriate HTTP status code
  • Add support for configuring PHP error level to log levels
  • Add the dispatcher option to debug:event-dispatcher
  • Add the event_dispatcher.dispatcher tag
  • Add assertResponseFormatSame() in BrowserKitAssertionsTrait
  • Add support for configuring UUID factory services
  • Add tag assets.package to register asset packages
  • Add support to use a PSR-6 compatible cache for Doctrine annotations
  • Deprecate all other values than "none", "php_array" and "file" for framework.annotation.cache
  • Add KernelTestCase::getContainer() as the best way to get a container in tests
  • Rename the container parameter profiler_listener.only_master_requests to profiler_listener.only_main_requests
  • Add service fragment.uri_generator to generate the URI of a fragment
  • Deprecate registering workflow services as public
  • Deprecate option --xliff-version of the translation:update command, use e.g. --format=xlf20 instead
  • Deprecate option --output-format of the translation:update command, use e.g. --format=xlf20 instead

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.