This week, the upcoming Symfony 5 2. version added support for defining validation constraints as PHP 8 attributes, new Twig form helpers and a new magic login link authentication. Meanwhile, the official Symfony shop added new swag and the upcoming SymfonyWorld online conference announced new speakers.
Symfony development highlights
This week, 75 pull requests were merged (54 in code and 21 in docs) and 50 issues were closed (39 in code and 11 in docs). Excluding merges, 51 authors made 5,942 additions and 4,755 deletions. See details for code and docs.
- 1b68947: [BrowserKit] cookie expiration at current timestamp
- 4be56f6: [Form] propagate validation groups to subforms
- 8731a4f: [Messenger] fixed Redis connection error message
- dadce4b: [TwigBundle] only remove kernel exception listener if twig is used
- abe0eca: [HttpClient] fixed using HTTPS with proxies
- 9a5a856: [ErrorHandler, DebugClassLoader] do not check Mockery mocks classes
- 9c8a300: [Routing] fixed using !important and defaults/reqs in inline route definitions
- aca260f: [HttpClient] fixed using proxies with NativeHttpClient
- 7187539: [HttpClient] fixed unsetting context[ssl][peer_name]
- b3a20e4: [HttpClient] always buffer empty responses
- 35e04d9: [Lock] fixed StoreFactory to accept same DSN syntax as AbstractAdapter
- 8065ab4: [FrameworkBundle] added Mailjet definition
- e36a36a: [DependencyInjection] fixed dumping non-shared lazy services
- 9c8a300: [Routing] fixed using !important and defaults/reqs in inline route definitions
- b94fef4: [Security] handle consecutive supports() calls in the RememberMeAuthenticator
- a429dee: [Lock] fixed non-blocking store fallback
- 3113fce: [Uid] make UUIDv6 always return truly random nodes to prevent leaking the MAC of the host
- e159dff: [Validator] added Ulid constraint and validator
- d5ce0e3: [Contracts] added TranslatableInterface
- 72b94b8: [Console] improved description for the help flag
- 5eb442e: [Validator] constraints as PHP 8 Attributes
- aa66149: [RateLimiter] added limit object on RateLimiter consume method
- f06f2f0: [RateLimiter] call all compound limiters on failure and added IO blocking
- 3c7a131: [Security] improved exception when rate-limiter is not installed and throttling enabled
- e8dd14a: [Console] clone stream on multiline questions so EOT doesn't close input
- 127724d: [Security, RateLimiter] added request rate limiter to prevent breadth-first attacks
- b35bbdb: [HttpClient] provided response body to the RetryDecider
- 14942db: [Messenger] dispatch event when a message is retried
- 954009a: [Messenger] added ErrorDetailsStamp
- d0ded92: [RateLimiter] fixed cache storage
- bd8c3c1: [RateLimiter] added Limit::ensureAccepted() which throws RateLimitExceededException if not accepted
- a3e8c11: [Mime] allow multiple parts with the same name in FormDataPart
- 1f7b8fd: [HttpClient] fixed exception triggered with AsyncResponse
- f589ff4: [HttpFoundation] added Request::toArray() for JSON content
- 534466d: [Security] magic login link authentication
- 35e04d9: [Lock] fixed StoreFactory to accept same DSN syntax as AbstractAdapter
- 2be6787: [Form] implement Twig helpers to get field variables
- 3b524f6: [Lock] prevent user serializing the key when store does not support it
Newest issues and pull requests
- [RFC] Rename Translatable to better follow conventions
- Support plain PHP as serializer resource metadata
- Support for non-scalar tag attributes
- [DX] TestContainer should expose a getServiceByTag() method
- Allow to override unexpected type validation error message for Collection and All constraints
They talked about us
- Symfony messenger with JSON messages
- Symfony AutoBind Parameter is Dead, Long live Constant Parameters
- Modern PHP with Composer and Symfony
- Services in Symfony
- How to automatically login customer after registration with Symfony
- Symfony — Charger dynamiquement des services avec le ServiceSubscriber
- Валидация в PHP. Красота или лапша?
Call to Action
- Follow Symfony on Twitter and retweet this article.
- Subscribe to the Symfony blog RSS and never miss a Symfony story again.