This week, the upcoming Symfony 8.1 development activity focused on controllers and attributes. In attributes, we added features like support for "this" variable in IsGranted attribute and support of expressions in MapRequestPayload validation groups. Controllers added features to expose controller metadata throughout the request lifecycle, dispatch events named after controller attributes, and new methods to evaluate expressions or closures in controller attributes.
Symfony development highlights
This week, 90 pull requests were merged (38 in code and 52 in docs) and 65 issues were closed (23 in code and 42 in docs). Excluding merges, 26 authors made 4,857 additions and 1,320 deletions. See details for code and docs.
- 1d8dfd0: [Mime] update mime types
- 167bd62: [HttpClient] fix destructor throwing while timeout was handled
- 1e622b1: [HttpFoundation] reject invalid paths
- 19c7c38: [DoctrineBridge] respect schema_filter in schema listeners
- fa5cadf: [WebProfilerBundle] fix hot reload support
- 580da18: [Serializer] normalize static methods when they have groups
- be304cf: [String] treat emoji VS16 as wide in width calc
- 031f479: [FrameworkBundle] fix BrowserKitAssertionsTrait compatibility with HttpBrowser
- 43b5141: [Mailer] fix Mailjet SMTP relay X-MJ-TemplateErrorReporting header format to MailjetApiTransport
- 8141d71: [DoctrineBridge] fix compatibility with DBAL 4.4+
- df1a2fa: [String] fix compatibility with PCRE < 10.40
- 50714e3: [Intl] update data to ICU 78.2
- 81dd372: [Messenger] fix AMQP heartbeat reconnection during in-flight message handling
- c6de7ba: [Messenger] optimize serialized size of ErrorDetailsStamp
- feb9384: [Messenger, Cache] fix forwarding SSL settings to the redis sentinel
- 740f268: [Yaml] fix parsing nested mappings in sequences
- 18b98d5: [HttpKernel] fix handling empty MapUploadedFile arrays
- 70012e0: [PropertyInfo] fix union with mixed handling
- ba23f08: [JsonStreamer] fix composite node provider arguments in stream mode
- 7908392: [FrameworkBundle] fix forward compatibility with JsonStreamer 8.1+
- 1983220: [FrameworkBundle] fix autoconfiguring controllers using legacy Route annotations as attributes
- ecc007b: [JsonStreamer] fix DateTime handling in union types
- facff1c: [Notifier] document Mercure options in README file
- cdc22f9: [Security] add this to #[IsGranted] subject expression vars when available
- 386a8cc: allow usage of expressions for defining validation groups in #[MapRequestPayload]
- c778b8c: [HttpKernel] expose controller metadata throughout the request lifecycle
- a91c19f: [FrameworkBundle] deprecate container parameters router.request_context.scheme and .host
- 28d1f36: [FrameworkBundle, Lock] scope semaphore and flock stores by project dir by default
- 2363764: [HttpKernel] dispatch events named after controller attributes
- f5a236d: [HttpKernel] add ControllerEvent::evaluate() et al. to help with evaluating expressions or closures in controller attributes
- 47ed844: [HttpKernel] validate typed request attribute values before calling controllers
- 7c2dfcb: [Messenger] add idle timeout option to BatchHandlerTrait
Newest issues and pull requests
- [Console] Add image support to QuestionHelper and #[Ask]
- [HttpKernel][WebProfilerBundle] Add error indicator to profiler list view
- [Process] Add option for stripping trailing line break from output
Symfony Jobs
These are some of the most recent Symfony job offers:
- Backend Symfony Developer at Licorn Group SA
Contract / Freelance - €350 – €450 / day
Full remote
View details - Software Architect for a Symfony project at Califrais
Full-time - €60,000 – €75,000 / year
Remote + part-time onsite (Paris, France)
View details - Symfony Developer at Paystone
Full-time - CA$75,000 – CA$100,000 / year
Full remote
View details - Symfony Developer at Dutch Volleyball Federation Nevobo
Full-time - €33,000 – €46,000 / year
Remote + part-time onsite (Utrecht, Netherlands)
View details - DevOps for a Symfony project at Dayuse
Full-time - €50,000 – €60,000 / year
Remote + part-time onsite (Paris, France)
View details
You can publish a Symfony job offer for free on symfony.com.
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.
This week, SymfonyCasts published the following updates:
- (Video) Symfony 7 Forms: The Basics: Submitting a Form via GET
- (Video) Symfony 7 Forms: The Basics: Forms Without a Data Class
- (Video) Symfony 7 Forms: The Basics: Embracing Entity's CRUD Operations
They talked about us
- Pimcore UrlSlug + Symfony Controller Injection: A Really Elegant Combo (Once You Get It)
- Pragmatic application caching with Symfony Cache: Pools, Tags and Invalidation
- Chat With Your Logs: Introducing AI Log Inspector Agent for PHP
Call to Action
- Follow Symfony on X, on Mastodon, on Bluesky and on Threads and share this article.
- Subscribe to the Symfony blog RSS and never miss a Symfony story again.
The link to "[DoctrineBridge] fix compatibility with DBAL 4.4+" is broken becuse the SHA-1 is too long. The right one is: https://github.com/symfony/symfony/commit/8141d71132501ae36a0b1789bf20c9f3ad6c851e