Quantcast
Channel: Symfony Blog
Viewing all 3075 articles
Browse latest View live

Symfony 4.4.10 released

$
0
0

Symfony 4.4.10 has just been released. Here is a list of the most important changes:

  • bug #37227 [DependencyInjection][CheckTypeDeclarationsPass] Handle unresolved parameters pointing to environment variables (@fancyweb)
  • bug #37103 [Form] switch the context when validating nested forms (@xabbuh)
  • bug #37182 [HttpKernel] Fix regression where Store does not return response body correctly (@mpdude)
  • bug #37193 [DependencyInjection][CheckTypeDeclarationsPass] Always resolve parameters (@fancyweb)
  • bug #37191 [HttpClient] fix offset computation for data chunks (@nicolas-grekas)
  • bug #37177 [Ldap] fix refreshUser() ignoring extr _fields (@arkste)
  • bug #37181 [Mailer] Remove an internal annot (@fabpot)
  • bug #36913 [FrameworkBundle] fix type annotation on ControllerTrait::addFlash() (@ThomasLandauer)
  • bug #37162 [Mailer] added the reply-to addresses to the API SES transport request. (@ribeiropaulor)
  • bug #37167 [Mime] use fromString when creating a new Address (@fabpot)
  • bug #37169 [Cache] fix forward compatibility with Doctrine DBAL 3 (@xabbuh)
  • bug #37159 [Mailer] Fixed generator bug when creating multiple transports using Transport::fromDsn (@atailouloute)
  • bug #37048 [HttpClient] fix monitoring timeouts when other streams are active (@nicolas-grekas)
  • bug #37085 [Form] properly cascade validation to child forms (@xabbuh)
  • bug #37095 [PhpUnitBridge] Fix undefined index when output of "composer show" cannot be parsed (@nicolas-grekas)
  • bug #37092 [PhpUnitBridge] fix undefined var on version 3.4 (@nicolas-grekas)
  • bug #37065 [HttpClient] Throw JsonException instead of TransportException on empty response in Response::toArray() (@jeroennoten)
  • bug #37077 [WebProfilerBundle] Move ajax clear event listener initialization on loadToolbar (@Bruno BOUTAREL)
  • bug #37049 [Serializer] take into account the context when preserving empty array objects (@xabbuh)

Want to upgrade to this new release? Because Symfony protects backwards-compatibility very closely, this should be quite easy. UseSymfonyInsight upgrade reports to detect the code you will need to change in your project andread our upgrade documentation to learn more.

Want to be notified whenever a new Symfony release is published? Or when a version is not maintained anymore? Or only when a security issue is fixed? Consider subscribing to the Symfony Roadmap Notifications.


Sponsor the Symfony project.

Symfony 5.0.10 released

$
0
0

Symfony 5.0.10 has just been released. Here is a list of the most important changes:

  • bug #37227 [DependencyInjection][CheckTypeDeclarationsPass] Handle unresolved parameters pointing to environment variables (@fancyweb)
  • bug #37103 [Form] switch the context when validating nested forms (@xabbuh)
  • bug #37182 [HttpKernel] Fix regression where Store does not return response body correctly (@mpdude)
  • bug #37193 [DependencyInjection][CheckTypeDeclarationsPass] Always resolve parameters (@fancyweb)
  • bug #37191 [HttpClient] fix offset computation for data chunks (@nicolas-grekas)
  • bug #37177 [Ldap] fix refreshUser() ignoring extr _fields (@arkste)
  • bug #37181 [Mailer] Remove an internal annot (@fabpot)
  • bug #36913 [FrameworkBundle] fix type annotation on ControllerTrait::addFlash() (@ThomasLandauer)
  • bug #37162 [Mailer] added the reply-to addresses to the API SES transport request. (@ribeiropaulor)
  • bug #37167 [Mime] use fromString when creating a new Address (@fabpot)
  • bug #37169 [Cache] fix forward compatibility with Doctrine DBAL 3 (@xabbuh)
  • bug #37159 [Mailer] Fixed generator bug when creating multiple transports using Transport::fromDsn (@atailouloute)
  • bug #37048 [HttpClient] fix monitoring timeouts when other streams are active (@nicolas-grekas)
  • bug #37085 [Form] properly cascade validation to child forms (@xabbuh)
  • bug #37095 [PhpUnitBridge] Fix undefined index when output of "composer show" cannot be parsed (@nicolas-grekas)
  • bug #37092 [PhpUnitBridge] fix undefined var on version 3.4 (@nicolas-grekas)
  • bug #37065 [HttpClient] Throw JsonException instead of TransportException on empty response in Response::toArray() (@jeroennoten)
  • bug #37077 [WebProfilerBundle] Move ajax clear event listener initialization on loadToolbar (@Bruno BOUTAREL)
  • bug #37049 [Serializer] take into account the context when preserving empty array objects (@xabbuh)

Want to upgrade to this new release? Because Symfony protects backwards-compatibility very closely, this should be quite easy. UseSymfonyInsight upgrade reports to detect the code you will need to change in your project andread our upgrade documentation to learn more.

Want to be notified whenever a new Symfony release is published? Or when a version is not maintained anymore? Or only when a security issue is fixed? Consider subscribing to the Symfony Roadmap Notifications.


Sponsor the Symfony project.

Symfony 5.1.1 released

$
0
0

Symfony 5.1.1 has just been released. Here is a list of the most important changes:

  • bug #37227 [DependencyInjection][CheckTypeDeclarationsPass] Handle unresolved parameters pointing to environment variables (@fancyweb)
  • bug #37103 [Form] switch the context when validating nested forms (@xabbuh)
  • bug #37182 [HttpKernel] Fix regression where Store does not return response body correctly (@mpdude)
  • bug #37193 [DependencyInjection][CheckTypeDeclarationsPass] Always resolve parameters (@fancyweb)
  • bug #37044 [DependencyInjection] Apply ExpressionLanguageProviderPass to router.default (@wizhippo)
  • bug #37054 [String] Fix ellipsis of truncate when not using cut option (@DuboisS)
  • bug #37190 [HttpClient] disable AMP's inactivity timeout, we deal with it on our own already (@nicolas-grekas)
  • bug #37191 [HttpClient] fix offset computation for data chunks (@nicolas-grekas)
  • bug #37176 [Routing] Keeping routes priorities after add a name prefix to the collection (@yceruto)
  • bug #37140 [Lock] Fixed reading locks from replica set secondary nodes (@kralos)
  • bug #37177 [Ldap] fix refreshUser() ignoring extr _fields (@arkste)
  • bug #37181 [Mailer] Remove an internal annot (@fabpot)
  • bug #36913 [FrameworkBundle] fix type annotation on ControllerTrait::addFlash() (@ThomasLandauer)
  • bug #37153 [PhpUnitBridge] Fix ExpectDeprecationTrait::expectDeprecation() conflict (@fancyweb)
  • bug #37162 [Mailer] added the reply-to addresses to the API SES transport request. (@ribeiropaulor)
  • bug #37144 [DI] Add check around clas _alias for generated proxy classes (@enumag)
  • bug #37167 [Mime] use fromString when creating a new Address (@fabpot)
  • bug #37169 [Cache] fix forward compatibility with Doctrine DBAL 3 (@xabbuh)
  • bug #37159 [Mailer] Fixed generator bug when creating multiple transports using Transport::fromDsn (@atailouloute)
  • bug #37154 [FrameworkBundle] Remove reference to AP _SECRET in MicroKernelTrait (@nicolas-grekas)
  • bug #37126 [SecurityBundle] Fix the session listener registration under the new authentication manager (@johnvandeweghe)
  • bug #37130 [Console] allow cursor to be used even when STDIN is not defined (@xabbuh)
  • bug #37053 [PropertyAccess] Fix getter call order BC (@1ed)
  • bug #37117 [Messenger/DoctrineBridge] set column length for mysql 5.6 compatibility (@Nemo64)
  • bug #37127 [Messenger/AmazonSqsBridge] Fixed left-over debug statement (@sstok)
  • bug #37048 [HttpClient] fix monitoring timeouts when other streams are active (@nicolas-grekas)
  • bug #37085 [Form] properly cascade validation to child forms (@xabbuh)
  • bug #37095 [PhpUnitBridge] Fix undefined index when output of "composer show" cannot be parsed (@nicolas-grekas)
  • bug #37092 [PhpUnitBridge] fix undefined var on version 3.4 (@nicolas-grekas)
  • bug #37022 [DependencyInjection] Improve missing package/version deprecation (@acrobat)
  • bug #37038 Fix invalid char in SQS Headers (@jderusse)
  • bug #37047 [SecurityBundle] Only register CSRF protection listener if CSRF is available (@wouterj)
  • bug #37065 [HttpClient] Throw JsonException instead of TransportException on empty response in Response::toArray() (@jeroennoten)
  • bug #37058 [FrameworkBundle] Extension Serializer issue (@Korbeil)
  • bug #37077 [WebProfilerBundle] Move ajax clear event listener initialization on loadToolbar (@Bruno BOUTAREL)
  • bug #37056 [DoctrineBridge] register event listeners depending on the installed packages (@xabbuh)
  • bug #37020 [ExpressionLanguage] reset the internal state when the parser is finished (@xabbuh)
  • bug #37049 [Serializer] take into account the context when preserving empty array objects (@xabbuh)
  • bug #37031 [Security] Fixed PUBLI _ACCESS in authenticated sessions (@wouterj)
  • bug #37028 [FrameworkBundle] Fix enable _locales behavior (@tgalopin)

Want to upgrade to this new release? Because Symfony protects backwards-compatibility very closely, this should be quite easy. UseSymfonyInsight upgrade reports to detect the code you will need to change in your project andread our upgrade documentation to learn more.

Want to be notified whenever a new Symfony release is published? Or when a version is not maintained anymore? Or only when a security issue is fixed? Consider subscribing to the Symfony Roadmap Notifications.


Sponsor the Symfony project.

A Week of Symfony #702 (8-14 June 2020)

$
0
0

This week, Symfony 3.4.42, 4.4.10, 5.0.10 and 5.1.1 maintenance versions were released. Meanwhile, the upcoming Symfony 5.2 version added support for true colors in the Console, continued improving async features in HttpClient and started moving config from XML to PHP thanks to a massive community effort.

Symfony development highlights

This week, 126 pull requests were merged (80 in code and 46 in docs) and 67 issues were closed (58 in code and 9 in docs). Excluding merges, 53 authors made 6,361 additions and 2,947 deletions. See details for code and docs.

3.4 changelog:

  • e26d5f2: [Cache] fixed forward compatibility with Doctrine DBAL 3
  • b1f19c4: [Form] rework form validator tests
  • f87c993: [FrameworkBundle] fixed type annotation on ControllerTrait::addFlash()
  • 54c9054: [HttpKernel] fixed regression where Store does not return response body correctly
  • 1f83212: [Form] switched the context when validating nested forms

4.4 changelog:

  • 4d6a02a: updated the Welcome page to mention the debug mode
  • 017af04: [FrameworkBundle] fixed XSD definition
  • 9b132bc: [Mailer] fixed generator bug when creating multiple transports using Transport::fromDsn
  • 5b719d1: [Mime] used fromString when creating a new Address
  • f88570a: [Mailer] added the reply-to addresses to the API SES transport request
  • c70241e: [Ldap] fixed refreshUser() ignoring extra_fields
  • 7107080: [HttpClient] fixed offset computation for data chunks
  • b1f2a14: [DependencyInjection] always resolve parameters in CheckTypeDeclarationsPass
  • 51be09c: [FrameworkBundle] removed non-existing arg and param from serializer service config
  • fd51aeb: [DependencyInjection] handled unresolved parameters pointing to environment variables in CheckTypeDeclarationsPass

5.1 changelog:

  • 72ca171: [Console] allowed cursor to be used even when STDIN is not defined
  • 9760d37: [SecurityBundle] fixed the session listener registration under the new authentication manager
  • fbc9f1c: [FrameworkBundle] removed reference to APP_SECRET in MicroKernelTrait
  • 9e1a8f0: [HttpClient] improved monitoring of timeouts with AmpHttpClient
  • 9760d37: [SecurityBundle] fixed the session listener registration under the new authentication manager
  • 5cefcc2: [PhpUnitBridge] fixed ExpectDeprecationTrait::expectDeprecation() conflict
  • 292be5f: [Lock] fixed reading locks from replica set secondary nodes
  • 7c892ee: [Routing] keeping routes priorities after add a name prefix to the collection
  • 8169581: [HttpClient] disabled AMP inactivity timeout
  • 69c37c0: [String] fixed ellipsis of truncate when not using cut option
  • faafec4: [DependencyInjection] applied ExpressionLanguageProviderPass to router.default
  • 080eef0: [SecurityBundle] fixed register csrf protection listener
  • a89cc6b: [SecurityBundle] run functional tests for the authenticator system

Master changelog:

  • d75ef18: [HttpClient] added AsyncDecoratorTrait to ease processing responses without breaking async
  • c459c80: [HttpClient] added support for pausing responses with a new pause_handler callable exposed as an info item
  • 4d477ec: [FrameworkBundle, Mailer] added a way to configure some email headers from semantic configuration
  • 691b604, 6b499e6: allow to override cache and log folders location using env vars
  • 6d6d989: [DependencyInjection] added check around class_alias for generated proxy classes
  • 4972ee0: [DependencyInjection] display alternatives when a service is not found in CheckExceptionOnInvalidReferenceBehaviorPass
  • dee6d43: [PropertyInfo] support using the SerializerExtractor with no group check
  • bb70cc8: [ExpressionLanguage] added details for error messages
  • 4984ce1: [DependencyInjection] added abstract_arg() and param()
  • ea956b1: [Console] added support for true colors
  • 753cac7, 9b08626: use PHP instead of XML as the prefered service/route configuration in core
  • d1b014a: [Mime] added DKIM support
  • 6ab2198: [HttpClient] made DNS resolution lazy with NativeHttpClient
  • 7107080: [HttpClient] fixed offset computation for data chunks
  • 88a06c9: [FrameworkBundle] added support for tagged_iterator/tagged_locator in unused tags util
  • faafec4: [DependencyInjection] applied ExpressionLanguageProviderPass to router.default
  • cef93ea: [Notifier] removed default transport property in Transports class
  • 131682f: [Notifier] moved configuration to PHP
  • 1b086ee: [Mime] moved configuration to PHP
  • 7a9f9e4: [FrameworkBundle] moved Secrets configuration to PHP
  • 263d54f: [FrameworkBundle] moved ErrorRenderer configuration to PHP
  • 124c139: [PropertyInfo] moved configuration to PHP
  • c48a30e: [FrameworkBundle] moved Security CSRF configuration to PHP
  • 188a985: [FrameworkBundle] moved Debug configuration to PHP
  • 3c5f9d1: [FrameworkBundle] moved SSI configuration to PHP
  • afed5ea: [FrameworkBundle] moved Profiler configuration to PHP
  • 4b22f97: [FrameworkBundle] moved Identity Translator configuration to PHP
  • f6d1869: [FrameworkBundle] moved Fragment Renderer configuration to PHP
  • 1d84e8b: [FrameworkBundle] moved Data Collector configuration to PHP
  • c0a3a64: [SecurityBundle] moved Templating configuration to PHP
  • b667eed: [FrameworkBundle] moved Web and WebLink configuration to PHP
  • 3acc72a: [FrameworkBundle] moved Lock configuration to PHP
  • 806fd22: [FrameworkBundle] moved PropertyAccess configuration to PHP
  • 8d27e45: [FrameworkBundle] moved Console configuration to PHP
  • f5310ce: [FrameworkBundle] moved Session configuration to PHP
  • 187936d: [FrameworkBundle] moved Validator configuration to PHP
  • 1b41bde: [FrameworkBundle] moved Cache configuration to PHP

Symfony CLI

Symfony CLI is a must-have tool when developing Symfony applications on your local machine. It includes theSymfony Local Server, the best way to run local Symfony applications. This week Symfony CLI released its new 4.16.0,4.16.1 and4.16.2 versions with the following changes:

  • Make git optional for most of SymfonyCloud related command if the project flag is used
  • Make vars that end with _KEY sensitive by default
  • Fix the CLI can ask for re-authentication while in the background
  • Fix PHP-CGI support with recent versions of Symfony (stderr logging)
  • [BC BREAK] Fix Mailer exposed env vars in a local Docker Compose environment
  • Fix local domains to be removed when starting the local web server
  • Prevent the use of the Windows binary under WSL
  • Increase autoupdate backups count to 2
  • Fix self:update is not cleaning up backups
  • Fix 'cannot move the file' errors during autoupdate when using more than one filesystem
  • Add more book requirements checks, tweak command output
  • Remove 'extra' spinners when not needed

Newest issues and pull requests

They talked about us

Call to Action


Sponsor the Symfony project.

Symfony 5.1.2 released

$
0
0

Symfony 5.1.2 has just been released. Here is a list of the most important changes:

  • bug #37286 [Console] Reset question validator attempts only for actual stdin (bis) (@nicolas-grekas)
  • bug #37265 [HttpFoundation] use InputBag for Request::$request only if data is coming from a form (@nicolas-grekas)
  • bug #37283 [SecurityBundle] Fix CookieClearingLogoutListener DI configuration (@wouterj)
  • bug #37160 Reset question validator attempts only for actual stdin (@ostrolucky)
  • bug #36975 [PropertyInfo] Make PhpDocExtractor compatible with phpDocumentor v5 (@DerManoMann)
  • bug #37279 [Form] Fixed prototype block prefixes hierarchy of the CollectionType (@yceruto)
  • bug #37276 [Form] Fixed block prefixes hierarchy of the CollectionType (@yceruto)
  • bug #37261 Fix register csrf protection listener (@Ne-Lexa)

Want to upgrade to this new release? Because Symfony protects backwards-compatibility very closely, this should be quite easy. UseSymfonyInsight upgrade reports to detect the code you will need to change in your project andread our upgrade documentation to learn more.

Want to be notified whenever a new Symfony release is published? Or when a version is not maintained anymore? Or only when a security issue is fixed? Consider subscribing to the Symfony Roadmap Notifications.


Sponsor the Symfony project.

Launch of the official Symfony store

$
0
0

Over the past years, we’ve been selling our Symfony products at our Symfony conferences only. But a lot of people from the great Symfony community were asking for our Symfony products from all over the world. We’re now very pleased to launch today our official Symfony store, available for shipping to Europe and the rest of the world coming soon.

You can now buy online your Symfony elePHPant, your Symfony t-shirt or any other Symfony swag available. Prices are VAT included, shipping will be calculated depending on the country of shipping. We will still sell all our Symfony products at our Symfony conferences. Want to tell the entire world you love Symfony? Here is what you can buy and receive at home:

  • Symfony 5: the Fast Track, printed version of the official Symfony book (available in English or French)
  • Small Symfony elePHPant (available in black or grey)
  • Big Symfony elePHPant (available in black or grey)
  • Symfony t-shirts (several designs available)
  • And more!

Each order comes with a surprise gift and for the first 200 orders, you’ll receive a free lanyard!

Check out our Symfony store! Stay tuned to discover more upcoming products and get our futures limited edition collections.


Sponsor the Symfony project.

A Week of Symfony #703 (15-21 June 2020)

$
0
0

This week Symfony 5.1.2 maintenance version was released. Meanwhile, the new official Symfony store was launched with great success. Finally, the upcoming Symfony 5.2 version continued migrating its internal configuration from XML to PHP.

Symfony development highlights

This week, 70 pull requests were merged (48 in code and 22 in docs) and 36 issues were closed (29 in code and 7 in docs). Excluding merges, 44 authors made 2,694 additions and 1,490 deletions. See details for code and docs.

3.4 changelog:

  • 363eec2: [Cache] fixed compat with DBAL v3
  • c16bb52: [FrameworkBundle] preserved dots in query-string when redirecting
  • 907ffa0: [VarDumper] fixed CliDumper coloration on light arrays
  • 2290c62: [PhpUnitBridge] streamline ansi/no-ansi of composer according to phpunit --colors option
  • 57251cd: [DependencyInjection] tighten detection of local dirs to prevent false positives
  • cf66f03, e707967: fixed support for PHP8 union types
  • cc145e2: [Form] collect all transformation failures

4.4 changelog:

  • bb8e66b: [PropertyInfo] made PhpDocExtractor compatible with phpDocumentor v5
  • 52612b1, 943c630: [Console] reset question validator attempts only for actual stdin
  • 5fb13bf: [HttpClient] convert CurlHttpClient::handlePush() to instance method
  • 453c3a7: [Messenger] fixed precedence of DSN options
  • b690a4a: [DependencyInjection] disabled preload.php on the CLI
  • 00b2f4e: [SecurityBundle] drop cache.security_expression_language service if invalid

5.1 changelog:

  • 8bb0897: [Form] fixed prototype block prefixes hierarchy of the CollectionType
  • 23f1226: [SecurityBundle] fixed CookieClearingLogoutListener configuration
  • 05817f1: [HttpFoundation] used InputBag for Request::$request only if data is coming from a form
  • 4773c5e: [HttpFoundation] allow null in InputBag@set
  • 6e09f92: [Security] removed unnecessary null check
  • 269a7a8: [SecurityBundle] fixed UserCheckerListener registration with custom user checker
  • 0091864: [Messenger] fixed queue_name option on amazon sqs connection

Master changelog:

  • 3267e8e: [Security] added attributes on Passport
  • 0fa01ae: [Security] let security factories add firewall listeners
  • b5a2af0: [FrameworkBundle] Moved Mailer configuration to PHP
  • a367d14: [FrameworkBundle] Moved Translation configuration to PHP
  • db78ad2: [WebProfilerBundle] Moved configuration to PHP
  • 7f5d876: [Routing] moved configuration to PHP
  • 8a6a95a: Moved service configuration to PHP
  • 7838fef: [FrameworkBundle] moved Request configuration to PHP
  • 9a6e727: [SecurityBundle] Moved configuration to PHP
  • d12eabc: [DebugBundle] Moved configuration to PHP
  • 6a6f478: [FrameworkBundle] Moved Asset configuration to PHP
  • 6d4b26d: [HttpClient] moved configuration to PHP
  • c04884b: [FrameworkBundle] Moved ESI configuration to PHP
  • 3e57f1f: [FrameworkBundle] Moved Annotations configuration to PHP

Symfony CLI

Symfony CLI is a must-have tool when developing Symfony applications on your local machine. It includes theSymfony Local Server, the best way to run local Symfony applications. This week Symfony CLI released its new 4.16.3 version with the following changes:

  • Fix tunnel:open only binds to port 30000 under WSL
  • Running env:sync without waiting (using --no-wait or an API Token) will not create a snapshot
  • Added a --no-snapshot option to env:sync
  • Fix symfony deploy might not be able to read keyboard input

Newest issues and pull requests

They talked about us

Call to Action


Sponsor the Symfony project.

Symfony SAS is now an official training center in France

$
0
0

Symfony SAS is now registered as an official training center of the Ile de France region. Any people working in France can use their «Training right» to fund our trainings organized before our Symfony conferences in France. For this year, you can apply for a funding at SymfonyLive Paris 2020 or SymfonyCon Disneyland Paris 2020. As this topic only applies to France, the following blog post will be written in French.


Nous avons le plaisir de vous informer que Symfony SAS est désormais référencé comme organisme de formations enregistré sous le numéro 11922263092 auprès du Préfet d’Ile de France et au Datadock. Toutes nos formations organisées en France peuvent donc être prises en charge par les OPCA (Organisme Paritaire Collecteur Agréé). L'Organisme Paritaire Collecteur Agréé est chargé de collecter, mutualiser et redistribuer les obligations financières versées par les entreprises au titre de la formation professionnelle. L'argent récolté sert au financement du Droit Individuel à la Formation (DIF)/Compte Personnel de Formation au 1er janvier 2015 (CFP), des périodes de professionnalisation, et du plan de formation de l'entreprise. L'OPCA assure le financement et la gestion administrative des actions de formations mises en œuvre par les entreprises.

Vous pouvez utiliser vos droits acquis via votre DIF pour faire financer par votre OPCA votre formation lors de nos sessions de formations pré-conférence organisées au SymfonyLive Paris 2020 ou à la SymfonyCon Disneyland Paris 2020. Pour créer votre dossier de formation, vous devez nous contacter à event[at]symfony.com. Nous vous aiderons dans vos démarches de financement pour valider votre inscription aux formations de nos conférences. Veuillez noter que la subrogation n’est par contre pas disponible. Des questions sur nos formations et leurs déroulés ? Contactez-nous !

Il reste encore quelques places pour les formations du SymfonyLive Paris 2020. Utilisez votre DIF pour vous former sur Symfony en amont de la conférence et améliorer vos connaissances. Contactez-nous pour plus d’informations.


Sponsor the Symfony project.

EasyAdmin 3 is released

$
0
0

EasyAdmin is an admin generator for Symfony applications. It helps you generate the backend of your projects by solving all the repetitive stuff (listing data, pagination, sorting, creating/updating entities, etc.)

EasyAdmin was created as a simpler (and less powerful) alternative toSonataAdmin. Originally, it took inspiration from symfony 1 admin generator and the entire backend was configured using a YAML file. This was nice for quickly creating backends, but made maintenance harder and creating complex backends nearly impossible.

A few days ago, after several months of hard work, EasyAdmin 3 was released. This new version is a complete revamp of the previous version. EasyAdmin no longer uses YAML and everything is configured with PHP code.

This is for example how to define a Dashboard that links to the CRUD operations (create, edit, list/show and delete) of some Doctrine entities:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
namespaceApp\Controller\Admin;useApp\Entity\Blog\Comment;useApp\Entity\Blog\Post;useEasyCorp\Bundle\EasyAdminBundle\Config\Dashboard;useEasyCorp\Bundle\EasyAdminBundle\Config\MenuItem;useEasyCorp\Bundle\EasyAdminBundle\Controller\AbstractDashboardController;classDashboardControllerextendsAbstractDashboardController{publicfunctionconfigureDashboard():Dashboard{returnDashboard::new()->setTitle('ACME Inc.');}publicfunctionconfigureMenuItems():iterable{yieldMenuItem::section('Blog');yieldMenuItem::linkToCrud('Posts','fa fa-file-text-o',Post::class);yieldMenuItem::linkToCrud('Comments','far fa-comments',Comment::class);// ...}}

EasyAdmin provides several commands to create the initial structure of these PHP classes (make:admin::dashboard, make:admin:crud). A key feature of the new EasyAdmin is that it stays as close to Symfony as possible. A “dashboard controller” is just a regular Symfony controller with a few custom methods, so you can use all Symfony controller features, you can access to your services, etc.

EasyAdmin uses tens of Symfony components, which provide an exceptional and rock-solid foundation to develop the project on top of them. This includes some of the newest components such as Symfony String and Symfony Uid. The String component is a personal favorite of mine because it allows you to write super clean and readable code:

1
2
// needed to turn 'foo' into '$foo' and 'foo.bar.baz' into '$fooBarBaz'$newName=u($name)->replace('.',' ')->camel()->collapseWhitespace()->toString();

This example is part of the migration command (make:admin:migration), which automatically turns the EasyAdmin 2 YAML configuration file into the PHP files used by EasyAdmin 3.

If you want to give EasyAdmin 3 a try in your project, run this command:

1
$ composer require easycorp/easyadmin-bundle:^3.0

You can also read EasyAdmin docs and visit the EasyAdmin blog, where you’ll find some technical articles explaining the most important changes made in this new version.

Thanks to all the developers who contributed to EasyAdmin 3 and thanks to the Symfony community in general for all their support.


Sponsor the Symfony project.

A Week of Symfony #704 (22-28 June 2020)

$
0
0

This week, the upcoming Symfony 5.2 version finished the migration of its internal configuration from XML to PHP thanks to a massive effort from the Symfony community. Meanwhile, Symfony 5.2 also introduced some new options to configure HTTP Cache and configure Trusted Proxies using semantic configuration, without having to modify the front controller.

Symfony development highlights

This week, 58 pull requests were merged (31 in code and 27 in docs) and 45 issues were closed (38 in code and 7 in docs). Excluding merges, 31 authors made 3,108 additions and 1,911 deletions. See details for code and docs.

3.4 changelog:

  • 3aa7426: [WebProfilerBundle] avoid accessibility errors on symfony web debug toolbar
  • 19668b2: [VarDumper] added support for cURL handler objects
  • 40152c3: [HttpFondation] changed file extension of audio/mpeg from mpga to mp3
  • 9660e6b: [Validator] fixed handling typed properties as constraint options
  • 9566cff: [Form] fixed guessing form types for DateTime types

4.4 changelog:

  • 030b10c: [Mime] check whether path is file in DataPart::fromPath()
  • 98acf1c: [HttpClient] unset activity list when creating CurlResponse
  • aeb0946: [Twig Bridge] made email templates responsive by default
  • b3adba8: [HttpClient] added support for cURL handler objects
  • 73596ef: [Messenger] directly use the driverConnection executeUpdate method

5.0 changelog:

  • de0563d: [BrowserKit] updated cookie test for cookie values with double quotes
  • 2435013: [Security] fixed the supports() method argument type of the security voter

5.1 changelog:

  • b83d250: [Security] resolve event bubbling of logout + new events in a compiler pass
  • 51a1820: [DependencyInjection] fixed call to sprintf in ServicesConfigurator::stack()

Master changelog:

  • 5597871: [Messenger] added support for Amazon SQS QueueUrl as DSN
  • 2c9e9cd: [FrameworkBundle] allow enabling the HTTP cache using semantic configuration
  • b3a313c: [DependencyInjection] deprecated Definition/Alias::setPrivate()
  • a3900af, 08f47a1: [FrameworkBundle] allow configuring trusted proxies using semantic configuration
  • ce8f8a5, 3308b25: [Notifier] added a SentMessage object
  • fb123e4: [HttpFoundation] added HeaderUtils::parseQuery() to preserve dots in query string parameter names
  • ce7e39b: [TwigBundle] deprecated the public "twig" service to private
  • 213c6ab: [Notifier] throw error when more than 10 fields are specified for Slack
  • 40890b1: [Form] moved configuration to PHP
  • 18fcb5f: [SecurityBundle] moved security configuration to PHP

Newest issues and pull requests

They talked about us

Call to Action


Sponsor the Symfony project.

Adding Insight support for the new FrameworkBundle recipe

$
0
0

On June 10th 2020, a large initiative was launched in the Symfony community to migrate the way configuration is expressed inside bundles developed by the framework from XML to PHP, in preparation for Symfony 5.2 and Symfony 6.

As explained in this Pull Request:

In Symfony 6, we will promote usage of configuration written in PHP instead of YAML. For third-party bundles and core, we should do the same, replacing XML with PHP. Doing so would remove the need for the XML lib for core.

The biggest advantage is auto-completion with any modern IDE without explicit support for Symfony, and probably one less thing to learn (how to configure things in YAML/XML).

In that context and in preparation for Symfony 5.2 at the end of the year, an update was applied on June 12th to the default Kernel.php shipped in the FrameworkBundle Flex recipe, in order to allow for PHP configuration to be used.

This change triggered SymfonyInsight analysis, as using a require or include statement inside your Symfony application is usually discouraged.

We just deployed an update to our analysis engine in order to adapt it to the new recipe format. You can now upgrade your Kernel.php to the newer version without issue!

Discover SymfonyInsight on insight.symfony.com!


Sponsor the Symfony project.

Free webinar on "SymfonyInsight and how to set up quality processes with Symfony", on July 9th 2020, 4 PM UTC

$
0
0

Ensuring the quality of a software project over time is a difficult and high-stakes challenge, whether you are a company or not. Year after year, pitfall after pitfall, Symfony has set up different tools and quality processes allowing applications based on the framework to use them (design patterns, semantic versioning, continuous update path, ...). SymfonyInsight, the application analysis tool developed by Symfony, can help you to ensure compliance with these quality processes.

Titouan Galopin, SymfonyInsight Product Manager, will teach you on July 9th 2020 how to set up quality processes with Symfony and how to architect a Symfony application to help its maintenance. You will see what is crucial to the success of a project beyond the code. SymfonyInsight brings the most advanced analysis of Symfony projects. Based on our experience building Symfony, we established a list of 110 control points to make sure an application is safe, reliable and maintainable.

You’re not yet familiar with SymfonyInsight? This is the perfect occasion to understand how it works to ensure the quality of your Symfony projects. Get rid of your critical problems and reduce your technical debt.

Join us for this free webinar on July 9th 2020, 4PM UTC, register now! The webinar will last about 45 min to 1 hour. Registration is mandatory to attend the webinar.

See you soon online!


Sponsor the Symfony project.

A Week of Symfony #705 (29 June - 5 July 2020)

$
0
0

This week, Symfony development activity focused on fixing bugs. Meanwhile, the upcoming Symfony 5.2 version added a feature to turn HttpClient responses into PHP streams and the Symfony Profiler added a new Session profiling feature. Lastly, SymfonyInsight announced a free webinar about setting up quality processes with Symfony.

Symfony development highlights

This week, 48 pull requests were merged (27 in code and 21 in docs) and 19 issues were closed (13 in code and 6 in docs). Excluding merges, 31 authors made 1,858 additions and 3,921 deletions. See details for code and docs.

3.4 changelog:

  • 034be44: [Debug] fixed throwing from __toString() in ErrorHandler
  • 52ddce1: [Validator] fixed validating lazy properties that evaluate to null
  • 9f6acd5: [Console] do not check for "stty" using "exec" if that function is disabled

4.4 changelog:

  • 4e16dfd: [Messenger] fixed compatibility with Doctrine DBAL 3.0
  • 78e6fc4: [Translation] fixed caching of parent locales file in translator
  • f024382: [HttpClient] fixed http_version option usage in CurlHttpClient
  • ee0e37b: [HttpClient] fixed parsing response headers in CurlResponse
  • fec2331: [Console] always use stty when possible to ask hidden questions
  • 3270726: [HttpClient] fixed promise behavior in HttplugClient

5.1 changelog:

  • 842a793: [PropertyAccess] removed unneeded inflector component dependency

Master changelog:

  • 3ce4391: [Console] changed default ProgressBar redraw frequency to 25fps
  • d555112: [HttpClient] added StreamableInterface to ease turning responses into PHP streams
  • 187b66b: [VarDumper] improved rendering HTML
  • 501542a: moved event alias mappings to their components
  • d8082fa: [HttpClient] added MockResponse::getRequestMethod() and getRequestUrl() to allow inspecting which request has been sent
  • 5b6139f: [Workflow] added function (and Twig extension) to retrieve a specific transition
  • 8cc90b9: [HttpKernel, WebProfilerBundle] added session profiling
  • 98e6a93: [HttpClient] always yield a LastChunk in AsyncResponse on destruction

Symfony CLI

Symfony CLI is a must-have tool when developing Symfony applications on your local machine. It includes theSymfony Local Server, the best way to run local Symfony applications. This week Symfony CLI released its new 4.16.4 and 4.16.5 versions with the following changes:

  • Fix zero exit code when running env:deactivate exit with an error
  • Fix missing directory creation when saving proxy.json
  • Alias SYMFONY_DEFAULT_ROUTE_URL to SYMFONY_PROJECT_DEFAULT_ROUTE_URL
  • Introduce SYMFONY_APPLICATION_DEFAULT_ROUTE_URL`
  • Make PHP 7.4 the default PHP version when initializing a project
  • Fix php-ext-install fails activating extension if php.ini does not end with a new line

Newest issues and pull requests

They talked about us

Call to Action


Sponsor the Symfony project.

Upgrade your legacy Symfony projects thanks to SymfonyCloud

$
0
0

If you created a new Symfony project in the last two years using Symfony 4, there are good chances that your application is using Flex. It drastically improves the experience of keeping projects up-to-date, including managing development and production environments thanks to SymfonyCloud.

However, what about applications still running Symfony 3 (or even Symfony 2)? The migration from one Symfony major version to the other is relatively easy (mainly thanks toSymfony's Backward Compatibility promise), but the migration to Flex might be more complicated as the default project tree changes, leading to infrastructure changes as well. Combine this with the migration to Symfony 4 and it becomes even more involved.

SymfonyCloud has been built from the ground up with Flex in mind. In fact, both of them work as a team with Flex enabling some SymfonyCloud features and SymfonyCloud bringing enlightenment on some edge-cases for Flex. Because of this, until now the official recommendation was to migrate to Flex before moving to SymfonyCloud.

Recently, while working on the migration of some of our very own applications (as you know «Architect's house is always crooked»), we realized that SymfonyCloud could actually help in the process of moving to Symfony 4 and Flex. A good example of that is the migration of SymfonyInsight to SymfonyCloud we performed a few weeks ago as explained by Titouan Galopin:

SymfonyInsight is an analysis platform that helps Symfony developers improve the quality and maintainability of their applications by analyzing the code of their projects automatically. It was originally developed with Symfony 2.1 and it has accumulated a lot of code in order to achieve its large features scope.

A few months ago, we started the process of migrating SymfonyInsight to SymfonyCloud as a way to iterate faster and increase our productivity, as well as reducing our costs.

We organized the migration of SymfonyInsight to SymfonyCloud in 3 main steps:

  1. The first thing we did was migrating from Symfony 2.8 to Symfony 3.4. Doing so does require a bit of work but SymfonyInsight itself helped us a lot by showing us where we were using depreciations in our code using Upgrade Reports. The migration did not involve a project directories change, only a Symfony upgrade.

  2. Once migrated, we could now profit from two keys features provided by Symfony 3: the cache was now mostly static, which works much better with read-only filesystems like on SymfonyCloud, and we were able to use runtime environment variables, leveraging the automatic wiring of SymfonyCloud with our services (PostgreSQL, Redis,...). We created a develop branch forked from our main branch and prepared the SymfonyCloud configuration there. This let us create a real environment on SymfonyCloud, allowing us to test everything in details. We still use this branch and environment as a staging environment.

  3. After a few weeks of preparation, from SymfonyCloud configuration to improvements in the code and long due refactorings, we then started the actual process of migration. We created a migration checklist in advance to avoid forgetting anything, which included:

  • (the day before the migration) shortening the DNS TTL in order to decrease the duration of the DNS propagation
  • disabling the scheduled tasks on the legacy infrastructure to avoid changing the database while we were migrating it
  • enabling the maintenance mode both on the SymfonyCloud and the legacy infrastructures
  • waiting for consumers to finish processing current messages and stopping them, also to avoid changing the database during the migration
  • actually cloning the database to SymfonyCloud
  • switching the DNS to target the new infrastructure
  • enabling consumers and scheduled tasks on the new infrastructure
  • disabling the maintenance on the new infrastructure

This maintenance lasted about 9 hours in order to migrate our 460G database to SymfonyCloud.

In the end, the migration was a success. We now deploy much more often (sometimes several times a day) and we decreased our cost by 50% from our legacy infrastructure on AWS.

Today, we released the final update to SymfonyCloud in order to smooth the experience running Symfony 2 or 3 applications on SymfonyCloud and assist you in the process of migrating to Symfony 4 and Flex.

Start your migration today byfollowing our guide.


Sponsor the Symfony project.

The European Commission Publishes its First Public Symfony Application

$
0
0

The European Commission is the executive branch of the European Union (EU), responsible for proposing legislation, implementing decisions, and managing the day-to-day business of the EU.

In 2019, the European Commission organized several hackathons to improve the code of Open Source projects like Symfony and they also funded a securitybug bounty program for Symfony. A few months later, they publishedtheir first Symfony bundles which provide support for CAS and EU Login authentication.

The European Commission has developed several internal applications based on Symfony, but a few days ago it went a bit further and published itsfirst public Symfony application.

The application is the Food Labelling Information System, which provides information in tens of languages about the legal requirements of the labelling of food products sold in the European Union.

Food Labelling Information System application developed by the European Commission using Symfony

Technically, the application is divided into two different parts. The front-end application uses Angular and is based on the eUI components. The backend is made with Symfony 5 and API Platform.

Thanks to Pol Dellaiera, who helped develop this application, for sharing some insights about it. We hope to see more Symfony-powered public applications developed by the European Commission soon!


Sponsor the Symfony project.

A Week of Symfony #706 (6-12 July 2020)

$
0
0

This week, Symfony added future compatibility with Doctrine DBAL 3 in Cache component and PHP 8 stack traces in Cache and Config components. Meanwhile, the upcoming Symfony 5.2 version added support for non-ASCII chars in email addresses and a feature to allow overriding the default non-debug template.

Symfony development highlights

This week, 34 pull requests were merged (24 in code and 10 in docs) and 43 issues were closed (39 in code and 4 in docs). Excluding merges, 25 authors made 2,533 additions and 168 deletions. See details for code and docs.

3.4 changelog:

  • 4297897: [Console] fixed question input encoding on Windows
  • 091fd50: [Form] fixed handling null as empty data
  • c0181c7: [Process] fixed Permission Denied error when writing sf_proc_00 lock files on Windows
  • 13982b5: [Cache] fixed compatibility with DBAL v3
  • 207b0b5: [Cache, Config] added compatibility with PHP 8 stack traces
  • 6bfdb92: [Form] silently ignore uninitialized properties when mapping data to forms
  • f49e8b5: [Form] Updated German translations
  • 2e7b993: [Form] Updated Vietnamese translations

4.4 changelog:

  • c702af4: [PhpUnitBridge] ExcludeList usage for PHPUnit 9.4

5.0 changelog:

  • f70bcf6: [String] throw when Alpine is used and translit fails
  • eae19f2: [String] added a help message when translation-contracts is not installed

5.1 changelog:

  • 309b062: [Form] added missing return in loadValuesForChoices method
  • 361bf33: [Security] skip remember-me logout on empty token
  • 2b18acc: [PhpUnitBridge] consider traits imported in parent classes
  • 6bfdb92: [Form] silently ignore uninitialized properties when mapping data to forms

Master changelog:

  • 70ebf7e: [ErrorHandler] allow override of the default non-debug template
  • e67c6d8: [HttpClient] fixed buffering AsyncResponse with no passthru
  • 5992bf0: [PhpUnitBridge] fixed expectDeprecation() in isolation
  • dfc3267: [Form] improved invalid messages for form types
  • 63f8827: [Mime] allowed non-ASCII characters in local part of email

Symfony CLI

Symfony CLI is a must-have tool when developing Symfony applications on your local machine. It includes theSymfony Local Server, the best way to run local Symfony applications. This week Symfony CLI released its new 4.17.0 and 4.17.1 versions with the following changes:

  • Add support for Symfony applications not using Flex
  • Add support for defining applications in .symfony/applications.yaml
  • Use GitHub API instead of Git to fetch security advisories database
  • Add imagick to the list of available extensions for PHP 7.4
  • Add better Web server support when running PHP FPM in Docker

Newest issues and pull requests

They talked about us

Call to Action


Sponsor the Symfony project.

A Week of Symfony #707 (13-19 July 2020)

$
0
0

This week, the upcoming Symfony 5.2 version added polyfills for the new PHPUnit 9.1 assertions, added a new method to get the contents of uploaded files and improved the list of MIME types by switching its source.

Symfony development highlights

This week, 30 pull requests were merged (19 in code and 11 in docs) and 25 issues were closed (14 in code and 11 in docs). Excluding merges, 20 authors made 1,221 additions and 210 deletions. See details for code and docs.

4.4 changelog:

  • a3bd36c: [DependencyInjection, Config] used several placeholder unique prefixes for dynamic placeholder values
  • b34abaf: [Mime] keep Sender full address when used by non-SMTP transports
  • f617380: [Mime] fixed compat with HTTP requests
  • fd13f5f: [Mailer] fixed reply-to functionality in the SendgridApiTransport
  • 8308861: [Mailer] fixed mandrill raw http request setting from email/name
  • 63d886f: [WebProfilerBundle] modified URL generation to always use absolute URLs

Master changelog:

  • 5a61446: [Mime] switching source of mime types from Apache to MIME-db
  • a4550da: [HttpFoundation] added File::getContent()
  • 488e2c9: [PhpUnitBridge] polyfill new phpunit 9.1 assertions
  • 367aa1d: [HttpKernel] hide "_password" in request data collector raw content

Symfony CLI

Symfony CLI is a must-have tool when developing Symfony applications on your local machine. It includes theSymfony Local Server, the best way to run local Symfony applications. This week Symfony CLI released its new 4.17.2 version with the following changes:

  • Add Github actions support to security:check

Newest issues and pull requests

They talked about us

Call to Action


Sponsor the Symfony project.

Composer 2 support in Symfony CLI and SymfonyCloud

$
0
0

Composer 2.0 is now available for testing. It has much better performance and memory usage. It also improves the way packages are downloaded to lower the time it takes to run commands like composer install or composer update.

Even if Composer 2 is not stable yet, you can already use it in your projects.

For Symfony CLI, running symfony composer checks the version of Composer used in thecomposer.lock file and tries to find a Composer binary named composer1 orcomposer2. If it fails, it falls back to the regular composer.phar orcomposer file names. The binary can be in the current directory or in the$PATH.

On SymfonyCloud, where composer install is ran by default, we are now using Composer version 1 or version 2 depending on thecomposer.lock of your project. SymfonyCloud provides Composer binaries for both versions (named composer and composer2) and uses symfony composer to automatically make the version choice. Feel free to test Composer 2 in a branch.


Sponsor the Symfony project.

SymfonyCloud: Installing PHP extensions

$
0
0

When deploying an application on SymfonyCloud, you can specify which PHP extensions your application needs:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# .symfony.cloud.yamltype:php:7.4runtime:extensions:-blackfire-xsl-amqp-pdo_pgsql-apcu-mbstring-sodium-ctype-iconv

Depending on the version of PHP, you might get different versions of each extension. But you will get the version provided by SymfonyCloud and that only works for supported extensions.

But what if you need a specific version of a PHP extension? Or what if you want to install an extension that is not pre-compiled on SymfonyCloud?

Let’s take an example. On PHP 7.4, we have decided to not provide the Redis extension anymore because of some API breaks. To avoid any issues, you should now install the version that your application can support:

1
2
3
variables:php-ext:redis:5.3.1

When using this configuration, the extension will be downloaded and compiled atbuilt time.

You can also use the php-ext-install script in your build configuration:

1
2
3
4
5
6
7
8
9
hooks:build:|set -x -ecurl -s http://get.symfony.com/cloud/configurator | (>&2 bash)(>&2php-ext-install redis 5.3.1symfony-build)

This script is also very useful when you want to install a PHP extension that is not available on PECL or if you want to test a specific branch of an extension repository:

1
php-ext-install redis https://github.com/phpredis/phpredis.git some-bug-fix-branch-name

Learn more in the docs.

This is a great way to control extension versions and to depend on any extension you might need.

Enjoy!


Sponsor the Symfony project.

Symfony 3.4.43 released

$
0
0

Symfony 3.4.43 has just been released. Here is a list of the most important changes:

  • bug #37635 [Cache] fix catching auth errors (@nicolas-grekas)
  • bug #37572 [FrameworkBundle] set default session.handler alias if handle _id is not provided (@Youssef BENHSSAIEN)
  • bug #37607 Fix checks for phpunit releases on Composer 2 (@colinodell)
  • bug #37562 [Cache] Use the default expiry when saving (not when creating) items (@philipp-kolesnikov)
  • bug #37563 Fix DBAL deprecation (@nicolas-grekas)
  • bug #37521 [Form] Fix ChoiceType translation domain (@VincentLanglet)
  • bug #37520 [Form] silently ignore uninitialized properties when mapping data to forms (@ph-fritsche)
  • bug #37526 [Cache][Config] ensure compatibility with PHP 8 stack traces (@xabbuh)
  • bug #37461 [Process] Fix Permission Denied error when writing s _pro _00 lock files on Windows (@JasonStephensTAMU)
  • bug #37505 [Form] fix handling null as empty data (@xabbuh)
  • bug #37385 [Console] Fixes question input encoding on Windows (@YaFou)
  • bug #37447 [Validator] fix validating lazy properties that evaluate to null (@xabbuh)
  • bug #37464 [ErrorHandler] fix throwing from toString() (@nicolas-grekas)
  • bug #37291 [MimeType] Duplicated MimeType due to PHP Bug (@juanmrad)
  • bug #37425 [Form] fix guessing form types for DateTime types (@xabbuh)
  • bug #37392 [Validator] fix handling typed properties as constraint options (@xabbuh)
  • bug #37389 [HttpFondation] Change file extension of “audio/mpeg” from “mpga” to “mp3” (@YaFou)
  • bug #37383 [VarDumper] Support for cURL handler objects (@derrabus)
  • bug #37345 [Form] collect all transformation failures (@xabbuh)
  • bug #37340 Fix support for PHP8 union types (@nicolas-grekas)
  • bug #37275 [DI] tighten detection of local dirs to prevent false positives (@nicolas-grekas)
  • bug #37090 [PhpUnitBridge] Streamline ansi/no-ansi of composer according to phpunit –colors option (@kick-the-bucket)
  • bug #36230 [VarDumper] Fix CliDumper coloration on light arrays (@l-vo)
  • bug #37270 [FrameworkBundle] preserve dots in query-string when redirecting (@nicolas-grekas)
  • bug #37342 [Cache] fix compat with DBAL v3 (@nicolas-grekas)

Want to upgrade to this new release? Because Symfony protects backwards-compatibility very closely, this should be quite easy. UseSymfonyInsight upgrade reports to detect the code you will need to change in your project andread our upgrade documentation to learn more.

Want to be notified whenever a new Symfony release is published? Or when a version is not maintained anymore? Or only when a security issue is fixed? Consider subscribing to the Symfony Roadmap Notifications.


Sponsor the Symfony project.
Viewing all 3075 articles
Browse latest View live