This week, Symfony released the first beta of Symfony 6.4 and the first beta of Symfony 7.0 so you can test them in your own apps before their final releases. In addition, the Symfony 6.3.6 maintenance version was released. Meanwhile, the development activity was frantic in order to merge and tweak all the pending new features of Symfony 6.4 and 7.0.
Symfony development highlights
This week, 132 pull requests were merged (113 in code and 19 in docs) and 65 issues were closed (45 in code and 19 in docs). See details for code and docs.
- d28330f: [Messenger] fix DoctrineOpenTransactionLoggerMiddleware
- bccdccc: [Serializer] fix collecting only first missing constructor argument
- 754e482: [Notifier] handle Sendinblue error responses without a message key
- a0df509: [HttpFoundation] do not swallow trailing = in cookie value
- 3d4a4e1: [Form] fix merging params & files when "multiple" is enabled
- 8c02677: [Cache] remove temporary cache item file on rename() failure
- 5eb5ac6: [DoctrineBridge] fix tests with Doctrine DBAL 3.8
- c4558e7: [HttpKernel] resolve EBADP error on flock with LOCK_SH with NFS
- dc331c6: [Validator] update Portuguese translation
- e58de24: [Validator] update Finnish translation
- 3f7ed60: [Validator] update Uzbek translation
- 800e613: [Validator] update Romanian translation
- feecf2e: [Validator] update Arabic translation
- 0aa03ae: [Validator] update Basque translation
- 4b99b98: [Validator] update Danish translation
- 7b48483: [Messenger] fix requiring symfony/deprecation-contracts
- fbd3a63: [Messenger] fix graceful exit with ids
- e2336db: [Validator] handle null case
- 50662d0: [Scheduler] added PreRunEvent and PostRunEvent events
- bc38faa: [Mime] update mime types
- f13a4b1: [HttpFoundation] support Cookies Having Independent Partitioned State (CHIPS)
- 48133f8: [HttpFoundation] cache trusted values
- d30597d: [ErrorHandler] improve fileLinkFormat handling
- 8ca6931: [AssetMapper] add a package specifier to importmap in case import name != package+path
- 7cf6f77: [AssetMapper] put importmap in polyfill so it can be hosted locally easily
- 934aea0: [Process] fix bug where $this->callback is never null, resulting in bad argument
- abe5555: [ErrorHandler] fix file link format call in trace view
- ba59377: [Scheduler] add FailureEvent
- aa5ba21: [FrameworkBundle] introduce $buildDir argument to WarmableInterface::warmup to warm read-only artefacts in build_dir
- 364cdce: [ErrorHandler] fix expected missing return types
- ec43483: [Tests] use JsonMockResponse where applicable
- f4b774f: [Notifier] handle error responses without a message key in Brevo
- c6930e3: [Mime] throw InvalidArgumentException on invalid form field type inside array
- b9122bc: [AssetMapper] link needs as="style"
- 9233ea8: [AssetMapper] disable profiler when the 'dev server' respond
- 814bcac, 67ecd29, 7402279: enable profiling commands
- 1469612, c817241, 2f247cf: [FrameworkBundle, Routing, Serializer] deprecate annotations
- 923ecdb: [HttpFoundation, Runtime] add $flush parameter to Response::send()
- 347d26e: [FrameworkBundle] remove the .data_collector.command service if its class does not exist
- 5c4757e: [HttpKernel] add missing class alias to satisfy autoloading
- dc23c8e: [WebProfilerBundle] favor Twig's include() function over the include tag
- 1a72bd5: [Translation] add argument $buildDir to DataCollectorTranslator::warmUp()
- eee7e8f: [DoctrineBridge] change argument $lastUsed of DoctrineTokenProvider::updateToken() to accept DateTimeInterface
- e942c1c: [Messenger] add AddFifoStamp middleware to Sqs
- 5301b00: [HtmlSanitizer] add support for sanitizing unlimited length of HTML document
- f5178e0: [FrameworkBundle, Routing, Translation, Workflow] move some compiler passes from FrameworkBundle to components
- 071a971: [AssetMapper] warn of missing or incompat dependencies
- 3f2d9d7: [AssetMapper] split ImportmapManager into two
- 97bbd4e: [AssetMapper] using ?specifier=* does not match unstable packages on jsdelivr
- 0284e95: [FrameworkBundle, Workflow] add WorflowGuardListenerPass only if it exists
- 18df11d: [AssetMapper] optimize memory usage by loading only compilable assets
- 124706b: [Workflow] add a TraceableWorkflow
- 4292cc0: [FrameworkBundle] fix requiring moved translation compiler passes
- e57ad37: [Intl] add support for emoji 15.1
- 91a3a4f: [Workflow] list place and transition listeners in profiler
- a19c534: [Notifier] implement overrides in Novu
- 0e201d1: [FrameworkBundle, Validator] allow implementing validation groups provider outside DTOs
- b6418aa: [HttpKernel] add parameters kernel.runtime_mode and kernel.runtime_mode.*, all set from env var APP_RUNTIME_MODE
- 3b02e73: [AssetMapper] fixing bug of bad parsing of imports when an import then export are adjacent
- d261eeb: [AssetMapper] allowing for files to be written to some non-local location
- 790f6f5: [AssetMapper] normalizing path in test to fix / comparison in Windows
- e520db5: [HttpKernel] remove deprecation layer for Profiler
- 950cd70: [FrameworkBundle, Routing] remove remaining deprecations
Newest issues and pull requests
- [Serializer] DiscriminatorMap: Improved error message
- Deprecated everything related to AnnotatedClassesToCompile
- [EventDispatcher] Listeners per events which implement some interface
- [RFC][Webhook] Webhook improvements
Symfony CLI
Symfony CLI is a must-have tool when developing
Symfony applications on your local machine. It includes the
Symfony Local Server,
the best way to run local Symfony applications. This week Symfony CLI released
its new 5.6.0
version with the following changes:
- Warn users to use sudo to mv command in bash-installer (@crydotsnake)
- Update service versions (@fabpot)
- Remove guessProjectRoot() (@fabpot)
- Prevent potential panic when proxy fails connecting to local server (@tucksaun)
- Fix generated cloud commands (@fabpot)
- Fix cloud tunnels (@fabpot)
- Fix cloud CLI executor (@fabpot)
- Fix a few bugs to the way we run cloud CLIs (@fabpot)
- Always use the latest version of the binary (@fabpot)
- Allow version 4 of the Platform.sh CLI to be installed (@fabpot)
- Add support in templates (@fabpot)
- Add support for discovering apps in Upsun projects (@fabpot)
- Add reading in .git/config to get the project ID (@fabpot)
- Add more Upsun support in error/help messages (@fabpot)
- Add missing alias (@fabpot)
- Add Upsun support (@fabpot)
- Add --upsun option to symfony new (@fabpot)
SymfonyCasts Updates
SymfonyCasts is the official way to learn Symfony.
Select a track for a guided path through 100+ video tutorial courses about
Symfony, PHP and JavaScript.
These were some of the most relevant SymfonyCasts updates
of the week:
- (Video) API Platform 3 Part 3: Custom Resources, Chapter 27: Quick! Create a DragonTreasure DTO
- (Video) API Platform 3 Part 3: Custom Resources, Chapter 28: Dtos, Mapping & Max Depth of Relations
- (Video) API Platform 3 Part 3: Custom Resources, Chapter 29: Making DragonTreasureApi Writable
- (Video) API Platform 3 Part 3: Custom Resources, Chapter 30: DTO & Security
- (Video) API Platform 3 Part 3: Custom Resources, Chapter 31: Field Security with Patch
They talked about us
- Combatting Login CSRF with Symfony
- Enhancing Sylius Security with Two-Factor Authentication (2FA) Using TOTP
- BunnyCDN via FlySystem on Symfony
- Implementing the Factory Method Design Pattern in Symfony
- Instant Messaging in Symfony: A Deep Dive into Mercure Integration
- How to Create a Bundle in Symfony
- Guía de Inicio Rápido para Symfony: Creación de un Proyecto y Configuración de la Base de Datos
Call to Action
- Follow Symfony on Twitter and retweet this article.
- Subscribe to the Symfony blog RSS and never miss a Symfony story again.
Sponsor the Symfony project.