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

SymfonyLive London 2019: meet the first selected speakers!

$
0
0

SymfonyLive London 2019 is coming on September 12th and 13th. This year, we organize the 8th edition of the conference! Join us at the only Symfony conference in the UK for 2 days of Symfony downtown London:

  • Pre-conference workshop day on September 12th. Workshops topics will be announced soon!
  • Conference day on September 13th: 2 tracks are organized during this one-day conference!

We are very pleased to announce the first selected speakers of the conference! We are still reviewing the talk proposals we received and would like to thank all the people who took the time to submit a talk proposal for the conference. We are super happy to introduce you to the first selected speakers who will be speaking this year at the conference (in order of appearance on the schedule):

  • Fabien Potencier, Symfony founder/project lead, will be on stage for the Opening Keynote!
  • Tobias Nyholm, Symfony Core team and the CARE team member, will be speaking about "Queues, busses and the Messenger component". Message queues are the perfect way to decentralize your application. You may use them for communication, scheduling and decentralization of your application. This talk will quickly go throw the basics of queues, hexagonal design and show proof of concept with Symfony’s Messenger component.
  • Dan Blows, will talk about "Feeling unfulfilled by SPA promises? Go back to Twig". We’ve all heard the benefits of building a client-side app in JavaScript that talks to a server-side REST API. But often this approach introduces a lot of accidental complexity, without really delivering the gains. How can you get the best of both worlds? In this talk, I’ll show how to get the simplicity of server-side rendering with the architectural and performance improvements of an SPA.
  • Titouan Galopin, SymfonyInsight Product Manager, will present a talk about "Demystifying React for Symfony developers". The world of Javascript is vast and exciting... but it can also be quite scary! It is an innovative world in which new technologies appear all the time, which can make it difficult for developers to keep up to date. One of the most famous of these technologies is probably React. But understanding it can be challenging: let's demystify it together so that you can enter the world of Javascript with confidence!
  • Neal Brooks, PHP engineer who likes using Symfony, will speak about "Restless microservices with Symfony". When we think about microservices we usually imagine a bunch of self-contained and job-focused applications, each specifying and managing their own boundaries and dependencies, and talking to each other over HTTP / REST APIs. In this presentation we’ll dig into the structure of microservices, think about the major pros and cons, and see if we can tweak it into something a bit more developer-friendly without losing the benefits.
  • Jakub Zalas, Symfony Core Team member, will talk about "Symfony QA with static analysis". Static analysis is performed on source code without actually executing it. Being a good companion for code reviews it is often used for quality assurance as part of continuous integration. It can also play an invaluable role when diving into an unfamiliar code base. In this talk, Jakub will explain how to incorporate static analysis into a Symfony project to get a better understanding of applications' quality.
  • Stephen Winter will present a talk about "Migrating to Symfony one route at a time". We recently acquired a new client and a new project. Unfortunately this was built in a fairly old version of a framework we're not so familiar with. There were several bugs to fix and plenty of new features the client wanted 'yesterday'! In this session we'll look at the challenges we faced and how we resolved them to allow us to leave the legacy application doing what it does but still being able to work with current packages and methodologies for new development.

Check out the entire conference schedule and all their talks in details!

Early bird registration has been extended to Friday 10th May until midnight! Get your early bird ticket now before the price changes!

We can't wait to meet you at SymfonyLive London 2019! See you there!


Be trained by Symfony experts - 2019-05-13 Cologne - 2019-05-13 Clichy - 2019-05-13 Clichy

Symfony 4.3.0-BETA1 released

$
0
0

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

  • feature #31249 [Translator] Set sources when extracting strings from php files (@Stadly)
  • feature #31365 [Intl] Made countries ISO 3166 compliant + exclude Zzzz script code (@ro0NL)
  • feature #31060 [Validator] Make API endpoint for NotCompromisedPasswordValidator configurable (@xelan)
  • feature #31353 [FrameworkBundle] Show injected services for iterator and array arguments (@jschaedl)
  • feature #31350 [Intl] Rename Regions to Countries (@ro0NL)
  • feature #31364 [Bridge/PhpUnit] Extract all the code but shebang from bin/simple-phpunit (@JustBlackBird)
  • feature #30985 [Form] Keep preferred choices order in ChoiceType (@vudaltsov)
  • feature #31288 [Messenger] RoutableMessageBus route to default bus (@dirk39)
  • feature #31292 [Validator] Allow intl timezones (@ro0NL)
  • feature #30970 [Messenger] Adding failure transport support (@weaverryan)
  • feature #31318 [Intl] Compile localized timezone offset name (@ro0NL)
  • feature #31248 [Translator] Add sources when dumping qt files (@Stadly)
  • feature #31280 [WebServerBundle] Change the default pidfile location to cache directory (@jschaedl)
  • feature #31293 [Form] Remove default option grouping in TimezoneType (@ro0NL)
  • feature #31262 [Intl] Update timezones to ICU 64.2 + compile zone to country mapping (@ro0NL)
  • feature #31295 [Intl] Add timezone offset utilities (@ro0NL)
  • feature #30958 [Messenger] Allows to register handlers on a specific transport (@sroze)
  • feature #31061 [BridgeDoctrineMessenger] Doctrine ping connection middleware (@insidestyles)
  • feature #31282 [Messenger] Add WorkerStoppedEvent (@chalasr)
  • feature #31138 [Security] Dispatch an event when "logout user on change" steps in (@Simperfit)
  • feature #31242 Update LoggingTranslator to log the change of a locale (@gmponos)
  • feature #30917 [Messenger] Add a redis stream transport (@soyuka, @alexander-schranz)
  • feature #31195 [Form] Add intltimezone input to TimezoneType (@ro0NL)
  • feature #31134 [Routing] do not encode comma in query and fragment (@Tobion)
  • feature #31220 [TwigBridge] bootstrap4 fil _widget: allow setting label attributes declared in labe _attr (@AngelFQC)
  • feature #31204 [Messenger] ease testing and allow forking the middleware stack (@nicolas-grekas)
  • feature #30370 [Cache] Add optimized FileSystem & Redis TagAware Adapters (@andrerom)
  • feature #28831 [Intl] Add Timezones (@ro0NL)
  • feature #31170 [Security] deprecate BCryptPasswordEncoder in favor of NativePasswordEncoder (@nicolas-grekas)
  • feature #31140 [Security] Add NativePasswordEncoder (@nicolas-grekas)
  • feature #31130 [VarDumper] add caster for WeakReference instances of PHP 7.4 (@nicolas-grekas)
  • feature #31082 [Form] Show all option normalizers on debug:form command (@yceruto)
  • feature #30957 [Messenger] Remove base6 _encode & use addslashes (@weaverryan)
  • feature #30717 [Serializer] Use name converter when normalizing constraint violation list (@norkunas)
  • feature #28846 [Intl] Simplify API (@ro0NL)
  • feature #31093 [PhpUnitBridge] ClockMock does not mock gmdate() (@Simperfit)
  • feature #29211 [PhpUnitBridge] Url encoded deprecations helper config (@greg0ire)
  • feature #31062 [Dotenv] Deprecate useage of "putenv" (@Nyholm)
  • feature #31021 [Cache] Added command for list all available cache pools (@Nyholm)
  • feature #31027 [Config] Deprecate TreeBuilder::root (@gharlan)
  • feature #31019 [Security] Replace Argon2PasswordEncoder by SodiumPasswordEncoder (@chalasr)
  • feature #30997 [Console] Add callback support to ConsoleQuestion autocompleter (@Mikkel Paulson)
  • feature #30959 [FrameworkBundle] [TwigBundle] Move the hinclude key away from templating (@Simperfit)
  • feature #30968 [Security] Add Argon2idPasswordEncoder (@chalasr)
  • feature #30963 [Serializer] Experimental for ObjectListExtractor (@joelwurtz)
  • feature #30933 [Routing][ObjectRouteLoader] Allow invokable route loader services (@fancyweb)
  • feature #30897 [DIC] Add a require env var processor (@mpdude)
  • feature #30964 [HttpKernel] Add a "short" trace header format, make header configurable (@mpdude)
  • feature #29935 [DI] Fix bad error message for unused bind under _defaults (@przemyslaw-bogusz)
  • feature #30962 [DoctrineBridge] Deprecated implicit optimization in DoctrineChoiceLoader (@HeahDude)
  • feature #30862 [Routing] UrlHelper to get absolute URL for a path (@vudaltsov)
  • feature #30607 [Serializer] Add Support of recursive denormalization on objec _t _populate (@jewome62)
  • feature #30429 [Form] grou _by as callback returns array (@antonch1989)
  • feature #30887 [FrameworkBundle] fix search in debug autowiring (@sez-open)
  • feature #30935 Use env variable to create anytype of lock store (@jderusse)
  • feature #30932 [Validator] Add an option to disable NotCompromisedPasswordValidator (@lyrixx)
  • feature #30909 [Translator] Add comments when dumping po files (@deguif)
  • feature #30913 [Messenger] Uses an AmqpStamp to provide flags and attributes (@sroze)
  • feature #30900 [Validator] add new Timezone validation constraint (@phansys)
  • feature #30915 [Serializer] Add datetimezone normalizer (@jewome62)
  • feature #28937 Improve Translator caching (@rpkamp)
  • feature #30904 [Serializer] provide new ObjectPropertyListExtractorInterface (@dmaicher)
  • feature #30902 [Workflow] The TransitionEvent is able to modify the context (@lyrixx)
  • feature #30908 [Workflow] Added workflo _transitio _blockers twig function (@lyrixx)
  • feature #30893 Add "input" option to NumberType (@fancyweb, @Bernhard Schussek)
  • feature #30898 [Validator] Wire NotCompromisedPassword in FrameworkBundle and handle non UTF-8 password (@tgalopin)
  • feature #30890 [Workflow] Changed initia _places to initia _marking, added property (@HeahDude, @lyrixx)
  • feature #30906 [symfony/HttpKernel] Throws an error when the generated class name is invalid. (@drupol)
  • feature #30892 [DomCrawler] Improve Crawler HTML5 parser need detection (@tgalopin)
  • feature #30901 Renamed NotPwned to NotCompromisedPassword (@javiereguiluz)
  • feature #30020 [Messenger] Ensure message is handled only once per handler (@keulinho, @sroze)
  • feature #30545 #30536 PropertyAccessor->getValue disable exception (@dimabory)
  • feature #30008 [messenger] Adds a stamp to provide a routing key on message publishing (@G15N, @sroze)
  • feature #29097 [Messenger] Add a "in-memory://" transport (@GaryPEGEOT, @sroze)
  • feature #30537 [HttpClient] logger integration (@antonch1989, @nicolas-grekas)
  • feature #30853 [Twig] Remove TemplatedEmail::template() (@fabpot)
  • feature #30757 [Messenger] Adding MessageCountAwareInterface to get transport message count (@weaverryan)
  • feature #28929 [HttpKernel][Framework] Locale aware services (@neghmurken)
  • feature #29306 [DomCrawler] Optionally use html5-php to parse HTML (@tgalopin)
  • feature #30255 [DependencyInjection] Invokable Factory Services (@zanbaldwin)
  • feature #30843 [HttpClient] Add ScopingHttpClient::forBaseUri() + tweak MockHttpClient (@nicolas-grekas)
  • feature #30844 [Cache] add logs on early-recomputation and locking (@nicolas-grekas)
  • feature #30520 [RouterDebugCommand] add link to Controllers (@nicoweb)
  • feature #30212 [DI] Add support for "wither" methods - for greater immutable services (@nicolas-grekas)
  • feature #30674 [FrameworkBundle] change the way http clients are configured by leveraging ScopingHttpClient (@nicolas-grekas)
  • feature #29312 [EventDispatcher] Split events across requests (@ro0NL)
  • feature #30827 [TwigBridge] Add template file link to debug:twig command (@yceruto)
  • feature #30826 [Form] Add file links for described classes in debug:form command (@yceruto)
  • feature #30813 New PHPUnit assertions for the WebTestCase (@Pierstoval, @fabpot)
  • feature #27738 [Validator] Add a HaveIBeenPwned password validator (@dunglas)
  • feature #30690 Changing messenger bus id from 'messag _bus' to 'messenger.defaul _bus' (@THERAGE Kévin)
  • feature #30810 [Inflector] remove "internal" marker from the component (@nicolas-grekas)
  • feature #26890 [Inflector] Support pluralization in the inflector (@mbabker)
  • feature #28637 [Validator] add number constraints (@jschaedl)
  • feature #30754 [Messenger] New messenger:stop-workers Command (@weaverryan)
  • feature #30707 [Messenger][DX] Allow stamps to be passed directly to MessageBusInterface::dispatch() (@weaverryan)
  • feature #29007 [Messenger] Add a Doctrine transport (@vincenttouzet)
  • feature #30628 Making the serializer configurable by transport (@weaverryan)
  • feature #30569 [FrameworkBundle][HttpKernel] Provide intuitive error message when a controller fails because it's not registered as a service (@moynzzz)
  • feature #26484 [Validator] String normalization options for string-based validators (@renan-taranto)
  • feature #30320 [Form][TwigBridge] Add ro _attr to form theme (@alexander-schranz)
  • feature #30371 [OptionsResolver] Add a new method addNormalizer and normalization hierarchy (@yceruto)
  • feature #27735 [Validator][DoctrineBridge][FWBundle] Automatic data validation (@dunglas)
  • feature #30758 [PropertyAccess] Allow Can Accessor in Property Access (@ragboyjr)
  • feature #30116 [Filesystem] Fix mirroring a directory into itself or in his child with realpath checks (@Fleuv, @XuruDragon)
  • feature #28879 [Debug] Mimic toString php behavior in FlattenException (@Deltachaos)
  • feature #29495 [Ldap] Implement pagination (@kevans91)
  • feature #29448 [Ldap] Entry move support (@kevans91)
  • feature #30741 Add the Mailer component (@fabpot)
  • feature #30780 Fix some exception previous type hints (@fabpot)
  • feature #30729 [HttpKernel] change $previous argument for HttpException to Throwable (@sGy1980de)
  • feature #30744 [Finder] Throw a dedicated exception for non-existing directory (@xelan)
  • feature #30759 [Messenger] Adding the "sync" transport to call handlers synchronously (@weaverryan)
  • feature #30772 [Contracts][EventDispatcher] move the Event class to symfony/contracts (@nicolas-grekas)
  • feature #30708 [Messenger] ReceiverInterface::handle() to get() & Worker with prioritized transports (@weaverryan)
  • feature #27648 [Lock] Added MongoDBStore (@Joe Bennett)
  • feature #30752 [HttpClient] use "nyholm/psr7" by default in Psr18Client (@nicolas-grekas)
  • feature #30671 Add optional parameter prefetching for AMQP connection (@fbouchery)
  • feature #25707 [DI] ServiceProviderInterface, implementation for ServiceLocator (@kejwmen)
  • feature #30606 [Validator] allow brackets in the optional query string (@Emmanuel BORGES)
  • feature #29476 [Messenger] Add a command to setup transports (@vincenttouzet)
  • feature #30719 [Mime] Add BodyRendererInterface (@fabpot)
  • feature #30664 [Finder] Get filename without extension (@antonch1989)
  • feature #30645 Alias for each assets package (@gpenverne)
  • feature #30706 [PropertyInfo] Add possibility to extract private and protected properties in reflection extractor (@joelwurtz)
  • feature #27808 [DI] Deprecate non-string default envs (@ro0NL)
  • feature #30691 [Contracts][EventDispatcher] add EventDispatcherInterface to symfony/contracts and use it where possible (@nicolas-grekas)
  • feature #20978 [Form] TransformationFailedException: Support specifying message to display (@ogizanagi)
  • feature #30676 Avoid dispatching SendMessageToTransportsEvent on redeliver (@weaverryan)
  • feature #26555 [Validator] Add constraint on unique elements collection(AssertUnique) (@zenmate, @nicolas-grekas)
  • feature #27684 [FrameworkBundle] Debug container environment variables (@ro0NL)
  • feature #30666 [Form][Console] Use dumper (@ro0NL)
  • feature #30559 [HttpClient] Parse common API error formats for better exception messages (@dunglas)
  • feature #28898 [Console] Add dumper (@ro0NL)
  • feature #30629 [HttpClient] added CachingHttpClient (@fabpot)
  • feature #30602 [BrowserKit] Add support for HttpClient (@fabpot, @THERAGE Kévin)
  • feature #30651 Allow user to set the project dir (@tdutrion)
  • feature #30654 [HttpClient] Add a ScopingHttpClient (@XuruDragon)
  • feature #30388 [Security] undeprecate the RoleHierarchyInterface (@xabbuh)
  • feature #30652 Fixing a bug where messenger:consume could send message to wrong bus (@weaverryan)
  • feature #30650 Dispatching two events when a message is sent & handled (@weaverryan)
  • feature #30557 [Messenger] Worker events + global retry functionality (@weaverryan)
  • feature #30468 [Workflow] Added support for many inital places (@lyrixx)
  • feature #30448 [Finder] Ignore paths from .gitignore #26714 (@amaabdou)
  • feature #30625 [HttpKernel] add RealHttpKernel: handle requests with HttpClientInterface (@fabpot)
  • feature #30508 [Routing] Exposed "utf8" option, defaults "locale" and "format" in configuration (@Jules Pietri)
  • feature #28920 [EventDispatcher] swap arguments of dispatch() to allow registering events by FQCN (@nicolas-grekas)
  • feature #30605 [Cache] added DSN support for rediss in AbstractAdapter and RedisTrait (@alex-vasilchenko-md)
  • feature #30604 [HttpClient] add MockHttpClient (@nicolas-grekas)
  • feature #21035 [FrameworkBundle] Deprecate the Templating component integration (@dunglas, @fabpot)
  • feature #30567 [HttpClient] exceptions carry response (@antonch1989)
  • feature #28849 [Messenger] Support for handling messages after current bus is finished (@Nyholm)
  • feature #29538 [Workflow] Add colors to workflow dumps (@alexislefebvre)
  • feature #28975 [DI] Add an url EnvProcessor (@jderusse)
  • feature #30419 [FrameworkBundle] Add integration of http-client component (@Ioni14, @nicoweb)
  • feature #30583 [Messenger] Display a nice error when connection fail (@lyrixx)
  • feature #30450 [Profiler] Render the performance graph with SVG (@Tom32i)
  • feature #29130 [Serializer] Normalize constraint violation parameters (@ogizanagi)
  • feature #28330 [MonologBridge] Add monolog processors adding route and command info (@trakos)
  • feature #30339 [Monolog] Disable DebugLogger in CLI (@lyrixx)
  • feature #30584 [Intl] Add compile binary (@ro0NL)
  • feature #30579 Using AMQP auto-setup in all cases, not just in debug (@weaverryan)
  • feature #30348 [DependencyInjection] Add ability to define an index for service in an injected service locator argument (@XuruDragon, @nicolas-grekas)
  • feature #30469 Create a hyperlink to interfaces/classes that can be autowired (@SerkanYildiz)
  • feature #30334 [DI] add ReverseContainer: a locator that turns services back to their ids (@nicolas-grekas)
  • feature #30539 [Messenger] deprecate LoggingMiddleware in favor of providing a logger to SendMessageMiddleware (@nicolas-grekas)
  • feature #30556 [HttpClient] Allow to pass user/pw as an array (@dunglas)
  • feature #30547 [HttpClient] Add new bearer option (@dunglas)
  • feature #29303 [Messenger] add welcome notice when running the command (@nicolas-grekas)
  • feature #30541 [BrowserKit] Rename Client to Browser (@fabpot)
  • feature #30504 [DI] replace "nullable" env processor by improving the "default" one (@nicolas-grekas)
  • feature #30499 [HttpClient] add ResponseInterface::toArray() (@nicolas-grekas)
  • feature #30472 [Translation] Add XLIFF 1 source to metadata to differentiate from attr (@ostrolucky)
  • feature #30484 [Mime] added Headers::toArray() (@fabpot)
  • feature #30482 [Mime] Fix support for date form parts (@fabpot)
  • feature #30385 [SecurityBundle] Validate the IPs configured in acces _control (@javiereguiluz)
  • feature #30413 [HttpClient][Contracts] introduce component and related contracts (@nicolas-grekas)
  • feature #30377 [Validator] add MIR card scheme (@antonch1989)
  • feature #29146 [Workflow] Added a context to Workflow::apply() (@lyrixx)
  • feature #30433 [Form] Allow to disable and customize PercentType symbol (@Ken Stanley, @OskarStark)
  • feature #30408 [HttpKernel] Better exception page when the invokable controller returns nothing (@dimabory)
  • feature #30325 [HttpKernel] Prevent search engines from indexing dev applications (@GaryPEGEOT)
  • feature #30390 [FrameworkBundle] Fix UrlGenerator::generate to return an empty string instead of null (@Emmanuel BORGES)
  • feature #30375 [Messenger] Added transport agnostic exception (@nikossvnk, @lolmx)
  • feature #29254 [FrameworkBundle] Added the condition routing option to the debug router command (@soufianZantar)
  • feature #30286 Drop more usages of Serializable (@nicolas-grekas)
  • feature #30379 [FrameworkBundle][Routing] allow boolean container parameters for routes (@dmaicher)
  • feature #29661 [Filesystem] Support resources and deprecate using arrays in dumpFile() and appendToFile() (@thewilkybarkid)
  • feature #30358 [Form] be able to specify the input format for times (@xabbuh)
  • feature #30416 Mime messages (@fabpot)
  • feature #22048 [Security] deprecate the Role and SwitchUserRole classes (@xabbuh)
  • feature #30345 [Monolog] Added a way to configure the ConsoleFormatter from the ConsoleHandler (@lyrixx)
  • feature #30357 [TwigBridge] rename paren _form() to for _parent() (@xabbuh)
  • feature #30257 [DependencyInjection] Allow to choose an index for tagged collection (@deguif, @XuruDragon)
  • feature #30311 [VarDumper] Implement DsCaster (@enumag)
  • feature #27570 [PropertyInfo] Added support for extract type from default value (@tsantos84)
  • feature #28919 [DX][WebProfilerBundle] Add Pretty Print functionality for Request Content (@SamFleming)
  • feature #28723 [Form] deprecate custom formats with HTML5 widgets (@xabbuh)
  • feature #29865 [Console] Added suggestions for missing packages (@przemyslaw-bogusz)
  • feature #30301 [VarDumper] add link to source next to class names (@nicolas-grekas)
  • feature #30225 publish message with custom queue options : flags | attributes (@fedor.f, @insidestyles)
  • feature #30249 [Routing] deprecate some router options (@Tobion)
  • feature #30267 [Form] add option to render NumberType as type="number" (@xabbuh)
  • feature #28969 [Form] deprecate using invalid names for buttons (@xabbuh)
  • feature #29887 [Form] Add inpu _format option to DateType and DateTimeType (@fancyweb)
  • feature #30051 Drop Serializable implementations (@renanbr)
  • feature #30236 Add element to ghost in Exception (@przemyslaw-bogusz)
  • feature #30120 [FrameworkBundle][Translation] Added support for PHP files with trans() in translation commands (@yceruto)
  • feature #28812 [Form] add a convenience method to get the parent form in Twig templates (@xabbuh)
  • feature #29121 [FrameworkBundle][Translation] Add support for Translator paths, Twig paths and Translator aware services paths in commands (@yceruto)
  • feature #28477 [Validator] Add new json Validator (@zairigimad)
  • feature #30126 [Form] forward valid numeric values to transform() (@xabbuh)
  • feature #28635 [Form] Add labe _translatio _parameters, hel _translatio _parameters and att _translatio _parameters options to base form type (@webnet-fr)
  • feature #29767 Nullable environment variable processor (@bpolaszek)
  • feature #30111 [SecurityBundle] Deprecate the normalization of the cookie names (@javiereguiluz)
  • feature #30027 [FrameworkBundle] Add si _length and si _bit _pe _character session ini options in session configuration (@XuruDragon)
  • feature #30075 [DependencyInjection] Added information about deprecated aliases in debug:autowiring (@XuruDragon)
  • feature #30024 [Debug] Display more details in the simple error page of Debug (@javiereguiluz)
  • feature #30052 [Security] Replace serialization API (@renanbr)
  • feature #27898 [Yaml] Fixed invalid Parser behavior (@guiguiboy)
  • feature #29753 [Console] Add an iterate method to the ProgressBar class (@jvasseur)
  • feature #29999 [PropertyAccess] speed up accessing object properties (@xabbuh)
  • feature #29641 [Validator] NotBlank: add a new option to allow null values (@dunglas)
  • feature #28721 [Form] deprecate some options for singl _text widgets (@xabbuh)
  • feature #29936 [Mime] Add a set of default content-types for some extensions (@fabpot)
  • feature #28865 [Routing] allow using compiled matchers and generators without dumping PHP code (@nicolas-grekas)
  • feature #29236 [Cache] deprecate all PSR-16 adapters, provide Psr16Cache instead (@nicolas-grekas)
  • feature #29958 introducing native php serialize() support for Messenger transport (@weaverryan, @xabbuh)
  • feature #29861 [Form][TwigBridge] Add hel _html (@mpiot)
  • feature #29968 [DI] Added support for deprecating aliases (@j92, @Renan)
  • feature #29850 [FrameworkBundle] xliff-version option to translation update command (@andrewwro)
  • feature #29896 [Mime] Add the component (@fabpot)
  • feature #29862 Add block prefix to csrf token field (@alexander-schranz)
  • feature #29881 [BrowserKit] Various changes to the Response class (@fabpot)
  • feature #29813 [FrameworkBundle] Remove ControllerTrait::isFormValid() (@lyrixx)
  • feature #29148 Load original file metadata when loading Xliff 1.2 files (@eternoendless)
  • feature #29840 [FrameworkBundle] pass project dir into the assets install command (@xabbuh)
  • feature #29821 [VarDumper] add caster for OpenSSL X.509 resources (@nicolas-grekas)
  • feature #29781 [DI] Add trim env processor (@ogizanagi)
  • feature #28902 [Debug] Detect virtual methods using @method (@ro0NL)
  • feature #29780 [Profiler] Still show locale and fallback locale even if no trans used (@ogizanagi)
  • feature #29680 [Form] Add new bloc _prefix option for an easy form theming (@yceruto)
  • feature #29528 [DebugBundle] Added 'theme' option to change the color of dump() when rendered inside templates (@dem3trio)
  • feature #24576 [FrameworkBundle] Added ControllerTrait::isFormValid (@lyrixx)
  • feature #29483 [HttpKernel] Set the default locale early (@thewilkybarkid)
  • feature #29186 [HttpKernel] Increase priority of AddRequestFormatsListener (@thewilkybarkid)
  • feature #29658 [Validator] Choices constraint improvement (@nikophil)
  • feature #29283 [Serializer] CsvEncoder no header option (encode / decode) (@redecs)
  • feature #29718 [PHPUnit bridge] Bump php version of PHPUnit-bridge (@gmponos)
  • feature #29599 [Routing] Allow force-generation of trailing parameters using eg "/exports/news.{ _format}" (@zavulon)
  • feature #29613 [VarDumper] Use hyperlinks in CliDescriptor (@ogizanagi)
  • feature #28581 [DomCrawler] return empty string on Crawler::text() and Crawler::html() instead of an exception (@respinoza)
  • feature #29286 [WebProfilerBundle] Enable translation filters (@ro0NL)
  • feature #29517 [Hackday][Messenger] Add an alias for transport.symfon _serializer so SerializerInterface can be autowired (@karser)
  • feature #29108 [DI] compute autowiring error messages lazily (@nicolas-grekas)
  • feature #29235 [VarDumper] add support for links in CliDumper (@nicolas-grekas)
  • feature #29541 [FrameworkBundle] Stop calling Kernel::boot() twice in cli (@chalasr)
  • feature #28931 [PhpUnitBridge] Added ClassExistsMock (@ro0NL)
  • feature #29504 [Validator] Add support for UATP card validation (@raulfraile)
  • feature #29168 [Console] Add hyperlinks support (@ostrolucky)
  • feature #29439 [PhpUnitBridge] install PHPUnit 7 on PHP 7.1 and fix requir. for PHPUnit 6 (@gregurco)
  • feature #29452 [Form] Shortcut debug:form for partial type name (@ro0NL)
  • feature #28954 [Debug] Mark ErrorHandler and ExceptionHandler classes as final (@fancyweb)
  • feature #28479 [Validator] Checking a BIC along with an IBAN (@sylfabre)
  • feature #28858 [DI] Deprecated using env vars with cannotBeEmpty() (@ro0NL)
  • feature #28976 [DI] Add a "default" EnvProcessor (@jderusse)
  • feature #29127 [DomCrawler] Added return of element name in extract() method (@andrey-helldar)
  • feature #29145 [Workflow] Trigger entered event for subject entering in the Workflow for the first time (@lyrixx)

Want to upgrade to this new release? Fortunately, because Symfony protects backwards-compatibility very closely, this should be quite easy.Read 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.


Be trained by Symfony experts - 2019-05-13 Cologne - 2019-05-13 Clichy - 2019-05-13 Clichy

New in Symfony 4.3: More Form improvements

$
0
0

Symfony 4.3 will include lots of new features related to forms, such assimpler form theming, more translation options and other improvements such as the option to include HTML contents in help messages.

This article shows more of those new features added in Symfony 4.3 to improve the development experience of forms.

Keep preferred choices order

Valentin Udaltsov

Contributed by
Valentin Udaltsov
in #30985.

The ChoiceType form field used to display select drop-downs, checkboxes and radio buttons defines an option called preferred_choices to display some options at the top of your list with a visual separator between them and the rest of the options:

1
2
3
4
5
6
7
useSymfony\Component\Form\Extension\Core\Type\ChoiceType;useSymfony\Component\Intl\Countries;->add('country',ChoiceType::class,['choices'=>Countries::getNames(),'preferred_choices'=>['US','JP','CN'],])

In previous Symfony versions, the preferred choices were sorted automatically as the rest of the options (in the previous example, they will be displayed in this order: CN, JP, US). In Symfony 4.3, these preferred options will be displayed in the exact same order as you defined in your code.

Improved the form debug command

Yonel Ceruto

Contributed by
Yonel Ceruto
in #31082.

The handy debug:form command has improved in Symfony 4.3. If a form type defines options with OptionsResolver normalizers associated to them, the command now displays all of them:

Row attributes in form themes

Alexander Schranz

Contributed by
Alexander Schranz
in #30320.

In current Symfony versions, when you need to do minor customizations (e.g. adding a CSS class) to the form_row block in form themes you need to override the entire form_row block contents. In Symfony 4.3, thanks to a newrow_attr option, you can do that as follows:

1
2
3
4
{%blockform_row%}{%setrow_attr={class:'some_custom_class'}%}{{parent()}}{%endblock%}

Custom errors in data mappers

Maxime Steinhausser

Contributed by
Maxime Steinhausser
in #20978.

Sometimes, when using data mappers with Symfony Forms, the generic error message shown when a data transformation fails is not clear enough. In Symfony 4.3 you'll be able to define a custom error message:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
classMoneyDataMapperimplementsDataMapperInterface{publicfunctionmapDataToForms($data,$forms){$forms=iterator_to_array($forms);$forms['amount']->setData($data?$data->getAmount():0);$forms['currency']->setData($data?$data->getCurrency():'EUR');}publicfunctionmapFormsToData($forms,&$data){$forms=iterator_to_array($forms);$amount=$forms['amount']->getData();if(!is_numeric($amount)){$failure=newTransformationFailedException('Expected numeric value');// 'setInvalidMessage()' method was introduced in Symfony 4.3$failure->setInvalidMessage('Money amount should be numeric. {{ amount }} is invalid.',['{{ amount }}'=>json_encode($amount)]);throw$failure;}$data=newMoney($forms['amount']->getData(),$forms['currency']->getData());}}

Customizable percent symbol

Oskar Stark

Contributed by
Oskar Stark
in #30433.

By default, Symfony uses % as the symbol displayed next to the values ofPercentType form fields. In Symfony 4.3 this is configurable thanks to a new option called symbol. Set it to false to not display any symbol or set it to a string value (e.g. ) to display any symbol.

1
2
3
4
5
useSymfony\Component\Form\Extension\Core\Type\PercentType;->add('salinity',PercentType::class,['symbol'=>'‰',])

Be trained by Symfony experts - 2019-05-13 Cologne - 2019-05-13 Clichy - 2019-05-13 Clichy

A Week of Symfony #645 (6-12 May 2019)

$
0
0

This week, the Symfony 4.3.0 beta 1 version was released, so you can test Symfony 4.3 in your own projects before the stable release at the end of May. Meanwhile, the SymfonyLive London 2019 conference announced its first speakers.

Symfony development highlights

This week, 82 pull requests were merged (59 in code and 23 in docs) and 32 issues were closed (28 in code and 4 in docs). Excluding merges, 42 authors made 9,377 additions and 15,196 deletions. See details for code and docs.

3.4 changelog:

  • 60b505e: [Console] fixed auto-complete for ChoiceQuestion
  • 7ae5fe0: [Intl] apply localeDisplayPattern and fix locale generation
  • 75d1dd4: [Intl] fixed root fallback locale
  • fb4d928: [Console] commands with an alias should not be recognized as ambiguous when using register
  • 11f8a1e: [HttpFoundation] allowed to set 'None' on samesite cookie flag
  • 0055284: [Serializer] fixed denormalization of object with variadic constructor typed argument

4.2 changelog:

  • 7de0f01: [Contracts] simplified implementation declarations
  • 7ca637e: remove deprecated usage of some Twig features
  • 3ae1e80: [Validator] fixed finding translator parent definition in compiler pass
  • b9d3135: [Messenger] made cache rebuild correctly when message subscribers change
  • 3ae1e80: [Validator] fixed finding translator parent definition in compiler pass
  • b9d3135: [Messenger] made cache rebuild correctly when message subscribers change

4.3 changelog:

  • aa37157: [PhpUnit Bridge] extract all the code but shebang from bin/simple-phpunit
  • b187261: [Intl] renamed Regions to Countries
  • 26e1d89: [FrameworkBundle] show injected services for iterator and array arguments
  • fec95e0: [Intl, Validator] handled alias locales/timezones
  • bee5216: [Messenger] fixed wrong use of generator returns
  • 4e61ff5: [Messenger] fixed Redis Connection::get() after reject()
  • ecfccc6: [Validator] made API endpoint for NotCompromisedPasswordValidator configurable
  • bec45ed: [Messenger] fixed rejecting of pending messages
  • 7596da1: [Intl] made countries ISO 3166 compliant
  • b2f5b8a: [Translator] set sources when extracting strings from PHP files
  • 04f117f: [Messenger] simplified SyncTransport and fixed bug with handlers transport
  • cbbf8b7: [Intl] revised timezone name generation
  • 4f290d7: [DomCrawler] fixed HTML5 parser integration
  • ae38ed8: [TwigBundle] fixed Mailer integration in Twig
  • fe0f324: [Messenger] fixed routable message bus default bus
  • 7800396: [Messenger] on failure retry, made message appear received from original sender
  • 22ffa5f: [Messenger] removed send_and_handle which can be achieved with SyncTransport
  • 7ef80ff: [Cache] log a more readable message when trying to cache an unsupported type
  • 6c5faef: [FrameworkBundle] fixed issue when a parameter contains a % character

Newest issues and pull requests

They talked about us

Upcoming Symfony Events

Call to Action


Be trained by Symfony experts - 2019-05-13 Cologne - 2019-05-13 Clichy - 2019-05-13 Clichy

New in DoctrineBundle 1.11.0

$
0
0

DoctrineBundle is the library that integrates the Doctrine DBAL and ORM libraries into Symfony applications. DoctrineBundle 1.11.0 has just been released and includes several new features and improvements. These are the most important ones.

Symfony Cache Pool Support

Using Symfony Cache pools for caching Doctrine's queries, metadata and results is now easier thanks to the new pool option. This allows using a Symfony Cache pool directly without having to create extra services:

  • YAML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    # config/packages/doctrine.yamldoctrine:orm:auto_generate_proxy_classes:falsemetadata_cache_driver:type:poolpool:doctrine.system_cache_poolquery_cache_driver:type:poolpool:doctrine.system_cache_poolresult_cache_driver:type:poolpool:doctrine.result_cache_pool
  • XML
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <!-- config/packages/doctrine.xml --><?xml version="1.0" encoding="UTF-8" ?><containerxmlns="http://symfony.com/schema/dic/services"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:doctrine="http://symfony.com/schema/dic/doctrine"xsi:schemaLocation="http://symfony.com/schema/dic/services        http://symfony.com/schema/dic/services/services-1.0.xsd        http://symfony.com/schema/dic/doctrine        http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd"><doctrine:config><doctrine:orm><doctrine:entity-manager><doctrine:query-cache-drivertype="pool"pool="doctrine.system_cache_pool"/><doctrine:metadata-cache-drivertype="pool"pool="doctrine.system_cache_pool"/><doctrine:result-cache-drivertype="pool"pool="doctrine.result_cache_pool"/></doctrine:entity-manager></doctrine:orm></doctrine:config></container>

Using the new pool setting is optional, as is the dependency on symfony/cache. However, in the future, declaring caches through DoctrineCacheBundle will be deprecated, leaving only the id and pool cache types. Support for DoctrineCacheBundle will be dropped in DoctrineBundle 2.0.

Store Backtraces When Profiling Queries

The new profiling_collect_backtrace configuration option enables backtrace collection when logging a query. This helps you find the exact source of failing or problematic queries:

DoctrineBundle Query Backtrace

Because of the large amount of data this can produce, this option is disabled by default and you will need to enable it explicitly.

New Messenger Middleware Services

If you are using the Messenger component, there are new middleware services you can use to avoid connection issues to your database:

  • The doctrine_ping_connection middleware will attempt to ping the connection and will reconnect to the database if this ping wasn't successful. It will also reset the entity manager should it have been closed in the meantime.
  • The doctrine_close_connection middleware will close the connection after handling a message.

Be trained by Symfony experts - 2019-05-13 Cologne - 2019-05-13 Clichy - 2019-05-13 Clichy

New in Symfony 4.3: HttpClient component

$
0
0
Nicolas Grekas

Contributed by
Nicolas Grekas
in #30413.

Making HTTP requests (e.g. to third-party APIs) is a frequent need for developers working on web applications. In Symfony 4.3 we'll make this simpler with a brand new component called HttpClient.

Basic usage

The Symfony\Component\HttpClient\HttpClient class provided to make HTTP requests is quite straightforward:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
useSymfony\Component\HttpClient\HttpClient;$httpClient=HttpClient::create();$response=$httpClient->request('GET','https://api.github.com/repos/symfony/symfony-docs');$statusCode=$response->getStatusCode();// $statusCode = 200$content=$response->getContent();// returns the raw content returned by the server (JSON in this case)// $content = '{"id":521583, "name":"symfony-docs", ...}'$content=$response->toArray();// transforms the response JSON content into a PHP array// $content = ['id' => 521583, 'name' => 'symfony-docs', ...]

By default, the component uses native PHP functions to make the HTTP requests, so you don't have to install any other dependency. However, it will use the cURL based transport if your system has both the cURL library and thePHP cURL extension installed.

When the HTTP status code of the response is not in the 200-299 range (i.e.3xx, 4xx or 5xx) your code is expected to handle it. If you don't do that, the getHeaders() and getContent() methods throw an appropriate exception:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
// the response of this request will be a 403 HTTP error$response=$httpClient->request('GET','https://httpbin.org/status/403');// this code results in a Symfony\Component\HttpClient\Exception\ClientException// because it doesn't check the status code of the response$content=$response->getContent();// do this insteadif(200!==$response->getStatusCode()){// handle the HTTP request error (e.g. retry the request)}else{$content=$response->getContent();}

Features

The new HttpClient component is packed with useful features. All of them are explained in the docs:

Symfony framework integration

When using HttpClient inside a full Symfony application instead of as a stand-alone component, you can configure it under the http_client key (check out the full HttpClient configuration reference):

1
2
3
4
5
6
# config/packages/framework.yamlframework:# ...http_client:max_redirects:7max_host_connections:10

Then, you can inject the HttpClient in other services as follows:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
useSymfony\Contracts\HttpClient\HttpClientInterface;classSomeService{private$httpClient;publicfunction__construct(HttpClientInterface$httpClient){$this->httpClient=$httpClient;}}

Future integrations

Having a default and official HTTP client for Symfony applications will allow us to implement other features that require communicating with third-party services. A recent example of this is the NotCompromisedPassword validator, which makes your applications more secure and uses the HttpClient component to make the HTTP requests required to check if a given password was publicly compromised or not.


Be trained by Symfony experts - 2019-05-15 Clichy - 2019-05-20 Lille - 2019-05-20 Clichy

Join Fabien Potencier at Amsterdam PHP meetup on June 20th

$
0
0

Logo of the Amsterdam PHP meetup group

We’re super excited to announce that Fabien Potencier, Symfony founder, will speak at Amsterdam PHP meetup on June 20th about “Developing Symfony applications in 2019”. Before the annual international Symfony conference, SymfonyCon Amsterdam 2019, which will be organized from November 21st to 23rd at the beautiful Beurs van Berlage downtown Amsterdam, we invite the Symfony and PHP communities from the Netherlands to join us at Amsterdam PHP meetup next month. We will talk about the latest Symfony features that can greatly improve your productivity (from Flex based projects, to the Maker bundle, and the new Mailer component).

The Amsterdam PHP meetup will be hosted by SensioLabs, creator of Symfony, from 6:30 pm to 10 pm at The Warehouse at Amsterdam Wicked Grounds: Generaal Vetterstraat 55, 1059BT Amsterdam.

Agenda of the meetup:

  • 6:30 pm - Doors open
  • 7:30 pm - Lightning talk from our host SensioLabs, by Grégory Pascal, SensioLabs co-founder
  • 7:45 pm - Talk by Fabien Potencier, Symfony founder, about “Developing Symfony applications in 2019”
  • 8:30 pm - Raffles, and announcements
  • 8:45 pm - Social, drinks and food

This free meetup is organized by Amsterdam PHP meetup, an English-speaking group for PHP Developers in and around Amsterdam. Their goal is to grow the local community, search for new developers and spread knowledge and resources. Register now to the meetup to secure your seat!

We hope to see you there before meeting you at the biggest Symfony conference of the year, SymfonyCon Amsterdam 2019, which will gather the international Symfony and PHP communities during 2 days of great conferences about Symfony, PHP and their ecosystems! We’ll soon announce the first part of the conference schedule and the pre-conference workshops topics! Register now to the conference!

In the meanwhile, see you next month in the beautiful city of Amsterdam for Amsterdam PHP meetup!


Be trained by Symfony experts - 2019-05-20 Lille - 2019-05-20 Clichy - 2019-05-20 Clichy

New in Symfony 4.3: Native password encoder

$
0
0
Nicolas Grekas

Contributed by
Nicolas Grekas
in #31140 and #31170.

Hashing passwords is one of the most critical parts of a good security system. In Symfony 4.3 we added a Sodium password encoder to hash (or "encode" as Symfony calls it for historical reasons) passwords using the libsodium library.

However, given the fast-paced evolving nature of hashers, it's less and less recommended to select a specific hashing algorithm. Even PHP'spassword_hash() function defines a special PASSWORD_DEFAULT value to auto-select the best possible hashing algorithm available (in current PHP versions this is still Bcrypt, but it will change in the future).

That's why in Symfony 4.3 we made some more changes related to password encoders. First, the new recommendation for hashing user passwords is to rely on the 'auto' value:

1
2
3
4
5
6
7
8
9
# config/packages/security.yaml
security:
    # ...
    encoders:
        App\Entity\User:-            algorithm: 'bcrypt'-            algorithm: 'argon2i'-            algorithm: 'sodium'+            algorithm: 'auto'

This value auto-selects the best possible hashing algorithm, so it doesn't refer to an specific algorithm and it will change in the future. The current implementation uses 'sodium' if possible and otherwise, it falls back to'native'.

The 'native' config option is associated with the NativePasswordEncoder class, which is the other main change about password hashers in Symfony 4.3. This new encoder relies both on Symfony and PHP to select the best possible algorithm.

The current NativePasswordEncoder implementation tries to use any of the Argon2 variants (Argon2i or Argon2id) before falling back to Bcrypt. However, if the PASSWORD_DEFAULT PHP constant changes in the future, that new algorithm will be selected (if PHP defines it as stronger than Argon2).


Be trained by Symfony experts - 2019-05-20 Lille - 2019-05-20 Clichy - 2019-05-20 Clichy

A Week of Symfony #646 (13-19 May 2019)

$
0
0

This week Symfony continued polishing the upcoming Symfony 4.3 version with the addition of a cache to improve PropertyInfo performance. In addition, the Symfony local web server started publishing its releases on GitHub, so you can watch that repository to not miss any release. Lastly, a special Amsterdam PHP Meetup was announced for June 20th in anticipation of the SymfonyCon Amsterdam 2019 conference.

Symfony development highlights

This week, 37 pull requests were merged (24 in code and 13 in docs) and 28 issues were closed (21 in code and 7 in docs). Excluding merges, 26 authors made 1,179 additions and 478 deletions. See details for code and docs.

3.4 changelog:

  • 01964c8: [Validator] updated the Danish translations
  • 721d721: [Debug] wrap call to require_once in a try/catch
  • 5355629: [Routing] fixed utf-8 encoding in default route name in AnnotationClassLoader
  • 365a390: [Doctrine] respect parent class contract in ContainerAwareEventManager

4.2 changelog:

  • ef7ff67: [HttpFoundation] prevent deprecation when filesize matches error code

4.3 changelog:

  • b7cd925: [Validator] skip readonly properties in autovalidation
  • 0d196c4: [Doctrine, PropertyInfo] detect if the ID is writeable
  • 3a17701: [FrameworkBundle] add cache configuration for PropertyInfo
  • a326acc: [Form] added intl/choice_translation_locale option to TimezoneType
  • 48233b0: [DependencyInjection] default to service id and not FQCN when building tagged locators
  • c5772ae: [Serializer] deprecate calling createChildContext without the format parameter

Master changelog:

  • b563fe6: [Console] optimisation getting the command when finding
  • 5bf7759: [FrameworkBundle] mention that the described service has been removed in debug:container

Newest issues and pull requests

They talked about us

Upcoming Symfony Events

Call to Action


Be trained by Symfony experts - 2019-05-20 Lille - 2019-05-20 Clichy - 2019-05-20 Clichy

Less than a month before SymfonyLive Warszawa 2019

$
0
0

SymfonyLive Warszawa 2019 Conference Logo

We're super excited to meet you next month at SymfonyLive Warszawa 2019 for the very first Symfony conference in Polish! The event is a 4-day event from June 11th to 14th:

  • Pre-conference workshop days on Tuesday 11th and Wednesday 12th. You can register to 2 different workshops: either Mastering OOP & Design Patterns by Titouan Galopin (2-day workshop) or Symfony 4 Best practices (1-day workshop on Tuesday June 11th) combo with Profiling Symfony & PHP apps (1-day workshop on Wednesday June 12th) by Nicolas Grekas. There are only a few seats left for the workshops! Hurry up to buy your combo ticket workshop and conference at regular price, 3159 PLN (VAT excl) until today, May 20th.
  • Conference days on Thursday 13th and Friday 14th. Join us for 2 days full of incredible talks about Symfony and its ecosystem! Buy your conference ticket at regular price, 949 PLN (VAT excl) until today, May 20th.

Don't miss the only Symfony event of the year in Poland! We're very pleased to welcome during the 2-day conference 14 fantastic speakers, among them:

We also have the pleasure to invite you to the social event of the conference on June 13th from 5:30 pm, right after the great "Symfopardy!" by Tomasz Kowalczyk at the end of the first day of conference!

The entire event will be organized at the beautiful Westin Hotel in Warsaw. All talks will be in Polish, except for the Keynotes, which will be in English.

Come for the conference to learn all about the latest developments with Symfony, share best practices, experience, knowledge and make new contacts with the great Symfony community from Poland! Enjoy the regular registration rates until tonight, May 20th at midnight, after that date the prices change!

See you next month at SymfonyLive Warszawa 2019, we can't wait to see you there!


Be trained by Symfony experts - 2019-05-20 Lille - 2019-05-20 Clichy - 2019-05-20 Clichy

New in Symfony 4.3: Timezone improvements

$
0
0

Symfony 4.3 will add a new Timezone validator to check that the given value is a valid timezone ID as defined by PHP. In addition to that validator, we've worked hard on many other features to improve the support of timezones.

Added timezones to the Intl component

The Intl component added a new Timezone class to get information about timezones, such as their names (in all languages):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
useSymfony\Component\Intl\Timezones;\Locale::setDefault('en');$timezones=Timezones::getNames();// ('timezoneID' => 'timezoneValue')// => ['America/Eirunepe' => 'Acre Time (Eirunepe)', 'America/Rio_Branco' => 'Acre Time (Rio Branco)', ...]$timezones=Timezones::getNames('de');// => ['America/Eirunepe' => 'Acre-Zeit (Eirunepe)', 'America/Rio_Branco' => 'Acre-Zeit (Rio Branco)', ...]$timezone=Timezones::getName('Africa/Nairobi');// => 'East Africa Time (Nairobi)'$timezone=Timezones::getName('Africa/Nairobi','de');// => 'Ostafrikanische Zeit (Nairobi)'

You can also check if a given timezone ID is valid:

1
$isValidTimezone=Timezones::exists($timezoneId);

Finally, you can get the timezone offset for any given timezone:

1
2
3
4
5
6
7
$offset=Timezones::getRawOffset('Etc/UTC');// $offset = 0$offset=Timezones::getRawOffset('America/Buenos_Aires');// $offset = -10800$offset=Timezones::getRawOffset('Asia/Katmandu');// $offset = 20700$offset=Timezones::getGmtOffset('Etc/UTC');// $offset = 'GMT+00:00'$offset=Timezones::getGmtOffset('America/Buenos_Aires');// $offset = 'GMT-03:00'$offset=Timezones::getGmtOffset('Asia/Katmandu');// $offset = 'GMT+05:45'

Intl timezones in TimezoneType

The TimezoneType form element supports both strings and PHP timezones in itsinput option (which defines the format the timezone is stored on your underlying object). In Symfony 4.3 this option supports a new value calledintltimezone to use \IntlTimeZone objects to store timezones.

Allow Intl timezones in validator

The Timezone validator added in Symfony 4.3 has been improved to also consider valid the ICU timezones, not only the PHP timezones. Besides, the list of ICU timezones has been updated to its 64.2 version. The only difference is that expired timezones cannot be used with IntlTimeZone.

In practice, this considers valid both UTC (the PHP format) and Etc/UTC (the ICU format), whereas Etc/UTC was considered wrong before (which is not).

Timezone names translation

This long-requested feature will finally make it in Symfony 4.3: the list of timezone names displayed by TimezoneType can be translated. Thanks to the newchoice_translation_locale option, you can set the locale used to translate the timezone names before displaying them to the user:

1
2
3
4
5
6
7
8
useSymfony\Component\Form\Extension\Core\Type\TimezoneType;// ...$builder->add('timezone',TimezoneType::class,[// ...'choice_translation_locale'=>'uk','intl'=>true,]);

In the example above, the timezones will be displayed in Ukrainian (locale =uk) instead of the default English, so the user will see things likeза центральноєвропейським часом (Амстердам) instead ofCentral European Time (Amsterdam).


Be trained by Symfony experts - 2019-05-22 Clichy - 2019-05-22 Lille - 2019-05-27 Clichy

Symfony 4.3.0-BETA2 released

$
0
0

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

  • bug #31569 [HttpClient] Only use CURLMOP _MA _HOS _CONNECTIONS & CUR _VERSIO _HTTP2 if defined (@GawainLynch)
  • bug #31566 [Security] fixed a fatal error when upgrading from 4.2 (@fabpot)
  • bug #31219 [HttpClient] Allow arrays as query parameters (@sleepyboy)
  • bug #31482 [Messenger][DoctrineBridge] Throws UnrecoverableMessageHandlingException when passed invalid entity manager name (@Koc)
  • feature #31471 [Messenger] Add "non sendable" stamps (@weaverryan)
  • bug #31545 [Messenger] Fix redis Connection::get() should be non blocking by default (@chalasr)
  • bug #31537 [Workflow] use method marking store (@noniagriconomie)
  • bug #31551 [ProxyManager] isProxyCandidate() does not take into account interfaces (@andrerom)
  • bug #31542 [HttpClient] add missing argument check (@nicolas-grekas)
  • bug #31544 [Messenger] Fix undefined index on read timeout (@chalasr)
  • bug #31335 [Doctrine] Respect parent class contract in ContainerAwareEventManager (@Koc)
  • bug #31421 [Routing][AnnotationClassLoader] fix utf-8 encoding in default route name (@przemyslaw-bogusz)
  • bug #31493 [EventDispatcher] Removed "callable" type hint from WrappedListener constructor (@wskorodecki)
  • bug #31502 [WebProfilerBundle][Form] The form data collector return serialized data (@Simperfit)
  • bug #31510 Use the current working dir as default first arg in 'link' binary (@lyrixx)
  • bug #31524 [HttpFoundation] prevent deprecation when filesize matches error code (@xabbuh)
  • bug #31535 [Debug] Wrap call to requir _once in a try/catch (@lyrixx)
  • feature #31030 [Serializer] Deprecate calling createChildContext without the format parameter (@dbu)
  • bug #31459 Fix the interface incompatibility of EventDispatchers (@keulinho)
  • bug #31463 [DI] default to service id - not FQCN - when building tagged locators (@nicolas-grekas)
  • feature #31294 [Form] Add intl/choic _translatio _locale option to TimezoneType (@ro0NL)
  • feature #31452 [FrameworkBundle] Add cache configuration for PropertyInfo (@alanpoulain)
  • feature #31486 [Doctrine][PropertyInfo] Detect if the ID is writeable (@dunglas)
  • bug #31481 [Validator] Autovalidation: skip readonly props (@dunglas)
  • bug #31480 Update dependencies in the main component (@DavidPrevot)
  • bug #31477 [PropertyAccess] Add missing property to PropertyAccessor (@vudaltsov)
  • bug #31479 [Cache] fix saving unrelated keys in recursive callback calls (@nicolas-grekas)
  • bug #30930 [FrameworkBundle] Fixed issue when a parameter contains a '' (@lyrixx)
  • bug #31438 [Serializer] Fix denormalization of object with variadic constructor typed argument (@ajgarlag)
  • bug #31445 [Messenger] Making cache rebuild correctly when message subscribers change (@weaverryan)
  • bug #31442 [Validator] Fix finding translator parent definition in compiler pass (@deguif)
  • bug #31475 [HttpFoundation] Allow set 'None' on samesite cookie flag (@markitosgv)
  • feature #31454 [Messenger] remove sen _an _handle which can be achieved with SyncTransport (@Tobion)
  • bug #31425 [Messenger] On failure retry, make message appear received from original sender (@weaverryan)
  • bug #31472 [Messenger] Fix routable message bus default bus (@weaverryan)
  • bug #31465 [Serializer] Fix BC break: DEPT _KE _PATTERN must be public (@dunglas)
  • bug #31458 [TwigBundle] Fix Mailer integration in Twig (@fabpot)
  • bug #31456 Remove deprecated usage of some Twig features (@fabpot)
  • bug #31207 [Routing] Fixed unexpected 404 NoConfigurationException (@yceruto)
  • bug #31261 [Console] Commands with an alias should not be recognized as ambiguous when using register (@Simperfit)
  • bug #31371 [DI] Removes number of elements information in debug mode (@jschaedl)
  • bug #31418 [FrameworkBundle] clarify the possible class/interface of the cache (@xabbuh)

Want to upgrade to this new release? Fortunately, because Symfony protects backwards-compatibility very closely, this should be quite easy.Read 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.


Be trained by Symfony experts - 2019-05-27 Clichy - 2019-06-3 Clichy - 2019-06-3 Clichy

Last days to submit a talk proposal for SymfonyCon Amsterdam 2019

$
0
0

Logo of the SymfonyCon Amsterdam 2019

The SymfonyCon Amsterdam will take place in only 6 months! Our Call for Papers is still open for a few more days!

We would like to invite the worldwide Symfony Community to participate in the Call for Papers for this event. For this conference, we are looking for:

  • Talks related to Symfony and its ecosystem.
  • Original talks that haven't been delivered in previous conferences.

If you never spoke at a conference before, we do have a mentoring program for speakers including a slack speaker-mentoring channel where several experienced speakers are happy to help shape your talk proposals, slides or help you during your rehearsals or do test runs via video conferences. If you want to share your Symfony or PHP experience with the community but you've never been on stage before, submit a talk proposal and add in the notes that you're intrested in our mentoring program for speakers! We'd love to hear what you want to share with the great Symfony community. Being an unexperienced speaker should not stop you from being a speaker, submit now your talk ideas!

Each selected speaker of the conference is eligible for travel cost reimbursement; 2 hotel nights accommodations, a free conference ticket, the invitation to the speaker event and a special gift!

If you didn't send yet your talk proposals, send them until May 24th (Midnight Paris time)!

We can't wait to meet you at SymfonyCon Amsterdam 2019 from November 21-23!


Be trained by Symfony experts - 2019-05-27 Clichy - 2019-06-3 Clichy - 2019-06-3 Clichy

New in Symfony 4.3: Extracting Translation Contents from PHP Files

$
0
0
Yonel Ceruto

Contributed by
Yonel Ceruto
in #30120.

The most time-consuming tasks when translating an application is to extract all the template contents to be translated and to keep all the translation files in sync. Symfony includes a command called translation:update that helps you with these tasks:

1
2
# updates the French translation with the missing strings found in templates/$ php bin/console translation:update --dump-messages --force fr

As explained in the docs, the main limitation of this command is that it can only extract contents from templates. In Symfony 4.3, we've improved this command to also extract translation contents from PHP files, such as controllers and services.

Specifically, the command now introspects any PHP file/class defined as service which also injects (or autowires) the Symfony translator service. Consider for example this controller defined as a service:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
useSymfony\Component\Translation\TranslatorInterface;classSomeControllerextendsAbstractController{publicfunctionsomeAction(TranslatorInterface$translator){$message=$translator->trans('some_message_key');// ...}}

In Symfony 4.3, the some_message_key ID will be extracted when running thetranslation:update command, whereas in previous Symfony versions it was ignored.

Related to this change, we've also improved the extraction logic for PHP (Pull Request 31249), QT (Pull Request 31248) and PO (Pull Request 30909) files to include the file path and line number where the extracted strings were originally found.


Be trained by Symfony experts - 2019-05-27 Clichy - 2019-06-3 Clichy - 2019-06-3 Clichy

A Week of Symfony #647 (20-26 May 2019)

$
0
0

This week, Symfony 4.3 beta2 version was released to better prepare for the final Symfony 4.3 release of the next week. Meanwhile, work on Symfony 4.4 (to be released on November 2019) started with the addition of Redis Sentinel support in Cache and LTS config information in the profiler.

Symfony development highlights

This week, 42 pull requests were merged (37 in code and 5 in docs) and 23 issues were closed (20 in code and 3 in docs). Excluding merges, 26 authors made 1,173 additions and 207 deletions. See details for code and docs.

3.4 changelog:

  • e24e7dc: [ProxyManager] isProxyCandidate() does not take into account interfaces
  • b60872b: [Process] fixed infinite waiting for stopped process
  • f93e252: [DependencyInjection] fixed using bindings with locators of service subscribers
  • 8a220d8: [WebProfilerBundle] used absolute URL for profiler links
  • b647f74: [Finder] fixed wrong method call casing

4.2 changelog:

  • 451b440: [Translation] fixed issue with new vs old TranslatorInterface in TranslationDataCollector

4.3 changelog:

  • b5dfbef: [HttpClient] added missing argument check
  • 86bc1be: [Workflow] used method marking store
  • 6fb05dc: [Messenger] fixed Redis Connection::get() should be non blocking by default
  • 6545805: [Messenger] added "non sendable" stamps
  • 987e1cf: [Messenger, DoctrineBridge] throw UnrecoverableMessageHandlingException when passed invalid entity manager name
  • 7f43878: [HttpClient] allow arrays as query parameters
  • 274ff66: [HttpClient] only use CURLMOPT_MAX_HOST_CONNECTIONS & CURL_VERSION_HTTP2 if defined
  • 90ca404: [HttpClient] display proper error message on TransportException when curl is used
  • cf7a91c: [Cache] improved logged messages
  • 77153b0: [FrameworkBundle] fixed named autowiring aliases for TagAwareCacheInterface
  • 6bd10a8: [Mime] added MIME type audio/x-hx-aac-adts
  • 6aacfea: [HttpClient] fixed handling exceptions thrown before first mock chunk

Master changelog:

  • 5239873: [DependencyInjection] deprecated short callables in YAML
  • 63d7309: [Cache] added Redis Sentinel support
  • 24af4c5: [HttpKernel] added LTS config

Newest issues and pull requests

They talked about us

Upcoming Symfony Events

Call to Action


Be trained by Symfony experts - 2019-05-27 Clichy - 2019-06-3 Clichy - 2019-06-3 Clichy

Symfony Contracts, battle-tested semantics you can depend on

$
0
0

Symfony Components are a set of decoupled and reusable PHP libraries and the foundation on which many PHP applications and libraries are built. Symfony Components are downloaded more than 3.5 million times every day, making them the most battle-tested libraries in the PHP landscape.

Symfony Contracts are a set of abstractions extracted out of the Symfony Components. They can be used to build on semantics that the Symfony Components proved useful - and that already have fully-tested implementations.

Symfony Contracts are split by domain and consist of a set of PHP interfaces, traits, normative docblocks and reference test suites when applicable. The versioning of Symfony Contracts is independent from Components, so we won't create a new tag if nothing changed on some contracts.

Starting from version 1.1 of Symfony Contracts, you can require each contracts as a separate package, instead of installing all of them as a single package. For example, if you only care about the Cache contracts, install this package:

1
$ composer require symfony/cache-contracts

When applicable, the provided contracts are built on top of PSRs: some of them extend existing PSRs (Cache and EventDispatcher), some others provide alternative abstractions with a broader domain coverage (HttpClient), and the remaining provide abstractions that are not covered by PSRs (Translation and Service).

Should I add these contracts to my project?

If your project is used as a reusable third-party library and you want to build on these contracts to achieve higher decoupling and interoperability, you should add them as explicit dependencies.

If your project is a stand-alone Symfony application, you are not required to add these contracts explicitly as dependencies. Installing the Symfony Component will require the needed contracts automatically (e.g. installing symfony/cache will also install symfony/cache-contracts for you).

In both cases, we recommend using the interfaces provided by the contracts as the type-hints of your own classes or interfaces when possible.


Be trained by Symfony experts - 2019-05-27 Clichy - 2019-06-3 Clichy - 2019-06-3 Clichy

Symfony 3.4.28 released

$
0
0

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

  • bug #31584 [Workflow] Do not trigger extra guards (@lyrixx)
  • bug #31349 [WebProfilerBundle] Use absolute URL for profiler links (@Alumbrados)
  • bug #31541 [DI] fix using bindings with locators of service subscribers (@nicolas-grekas)
  • bug #31568 [Process] Fix infinite waiting for stopped process (@mshavliuk)
  • bug #31551 [ProxyManager] isProxyCandidate() does not take into account interfaces (@andrerom)
  • bug #31335 [Doctrine] Respect parent class contract in ContainerAwareEventManager (@Koc)
  • bug #31421 [Routing][AnnotationClassLoader] fix utf-8 encoding in default route name (@przemyslaw-bogusz)
  • bug #31510 Use the current working dir as default first arg in 'link' binary (@lyrixx)
  • bug #31535 [Debug] Wrap call to requir _once in a try/catch (@lyrixx)
  • bug #31438 [Serializer] Fix denormalization of object with variadic constructor typed argument (@ajgarlag)
  • bug #31475 [HttpFoundation] Allow set 'None' on samesite cookie flag (@markitosgv)
  • bug #31261 [Console] Commands with an alias should not be recognized as ambiguous when using register (@Simperfit)
  • bug #31371 [DI] Removes number of elements information in debug mode (@jschaedl)
  • bug #31418 [FrameworkBundle] clarify the possible class/interface of the cache (@xabbuh)
  • bug #31411 [Intl] Fix root fallback locale (@ro0NL)
  • bug #31377 [Console] Fix auto-complete for ChoiceQuestion (multi-select answers) (@battye)
  • bug #31380 [WebProfilerBundle] Don't filter submitted IP values (@javiereguiluz)

Want to upgrade to this new release? Fortunately, because Symfony protects backwards-compatibility very closely, this should be quite easy.Read 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.


Be trained by Symfony experts - 2019-06-3 Clichy - 2019-06-3 Clichy - 2019-06-5 Clichy

Symfony 4.3 curated new features

$
0
0

Symfony 4.3.0 is going to be released in a few days. As for any other Symfony minor release, our backward compatibility promise applies and this means that you should be able to upgrade easily without changing anything in your code.

We've already blogged about the great 4.3 new features, but here is a curated list of the most relevant changes (this version has a total of 270 new small and big features):

New Components

  • HttpClient provides powerful methods to fetch HTTP resources synchronously or asynchronously (nicolas-grekas) #30413
  • Mailer helps sending emails (fabpot) #30741
  • Mime allows manipulating MIME messages (fabpot) #30416 and #29896

The new HttpClient, Mailer, and Mime components are marked as experimental in 4.3.

The Inflector component is not internal anymore.

Not really new components, but Contracts are now split and available on their own: Cache,EventDispatcher,HttpClient,Service, and Translation.

Messenger

The messenger component is still marked as experimental in 4.3.

  • Add a redis stream transport (soyuka, alexander-schranz) #30917
  • Add a Doctrine transport (vincenttouzet) #29007
  • Add a "in-memory://" transport (GaryPEGEOT, sroze) #29097
  • Add a messenger:stop-workers command (weaverryan) #30754
  • Add a command to setup transports (vincenttouzet) #29476
  • Add a "sync" transport to call handlers synchronously (weaverryan) #30759
  • Add failure transport support (weaverryan) #30970
  • Introducing native php serialize() support for Messenger transport (weaverryan, xabbuh) #29958
  • Use an AmqpStamp to provide flags and attributes (sroze) #30913
  • Add a stamp to provide a routing key on message publishing (G15N, sroze) #30008
  • Add MessageCountAwareInterface to get transport message count (weaverryan) #30757
  • Add WorkerStoppedEvent (chalasr) #31282
  • Allow to register handlers on a specific transport (sroze) #30958
  • Deprecate LoggingMiddleware in favor of providing a logger to SendMessageMiddleware (nicolas-grekas) #30539
  • Add transport agnostic exception (nikossvnk, lolmx) #30375
  • Make the serializer configurable by transport (weaverryan) #30628

Security

  • Dispatch an event when "logout user on change" steps in (Simperfit) #31138
  • Deprecate BCryptPasswordEncoder in favor of NativePasswordEncoder (nicolas-grekas) #31170
  • Add NativePasswordEncoder (nicolas-grekas) #31140
  • Replace Argon2*PasswordEncoder by SodiumPasswordEncoder (chalasr) #31019
  • Add Argon2idPasswordEncoder (chalasr) #30968
  • Deprecate the Role and SwitchUserRole classes (xabbuh) #22048
  • Replace serialization API (renanbr) #30052

Intl

  • Add Timezones (ro0NL) #28831
  • Simplify API (ro0NL) #28846
  • Made countries ISO 3166 compliant (ro0NL) #31365
  • Rename Regions to Countries (ro0NL) #31350
  • Add timezone offset utilities (ro0NL) #31295

Validator

  • Add a NotCompromisedPassword password validator (dunglas) #27738
  • Automatic data validation (dunglas) #27735
  • Add new JSON validator (zairigimad) #28477
  • Add new Timezone validation constraint (phansys) #30900
  • Allow intl timezones (ro0NL) #31292
  • Add number constraints (jschaedl) #28637
  • Add constraint on unique elements collection(AssertUnique) (zenmate, nicolas-grekas) #26555
  • Add MIR card scheme (antonch1989) #30377
  • Add support for UATP card validation (raulfraile) #29504
  • NotBlank: add a new option to allow null values (dunglas) #29641
  • Check a BIC along with an IBAN (sylfabre) #28479

Workflow

  • Add support for many inital places (lyrixx) #30468
  • Add a context to Workflow::apply() (lyrixx) #29146
  • Add colors to workflow dumps (alexislefebvre) #29538
  • The TransitionEvent is able to modify the context (lyrixx) #30902
  • Added workflow_transition_blockers twig function (lyrixx) #30908
  • Changed initial_places to initial_marking, added property (HeahDude, lyrixx) #30890
  • Trigger entered event for subject entering in the Workflow for the first time (lyrixx) #29145

Translator

  • Add support for PHP files with trans() in translation commands (yceruto) #30120
  • Set sources when extracting strings from php files (Stadly) #31249
  • Add sources when dumping qt files (Stadly) #31248
  • Add comments when dumping po files (deguif) #30909
  • Add XLIFF 1 source to metadata to differentiate from attr (ostrolucky) #30472
  • Enable translation filters (ro0NL) #29286
  • Add support for Translator paths, Twig paths and Translator aware services paths in commands** (yceruto) #29121
  • Load original file metadata when loading Xliff 1.2 files (eternoendless) #29148

Serializer

  • Add datetimezone normalizer (jewome62) #30915
  • CsvEncoder no header option (encode / decode) (redecs) #29283
  • provide new ObjectPropertyListExtractorInterface (dmaicher) #30904

DomCrawler

  • Optionally use html5-php to parse HTML (tgalopin) #29306
  • Return empty string on Crawler::text() and Crawler::html() instead of an exception (respinoza) #28581
  • Added return of element name in extract() method (andrey-helldar) #29127

Console

  • Add dumper (ro0NL) #28898
  • Added suggestions for missing packages (przemyslaw-bogusz) #29865
  • Add callback support to ConsoleQuestion autocompleter (Mikkel Paulson) #30997
  • Add an iterate method to the ProgressBar class (jvasseur) #29753
  • Add hyperlinks support (ostrolucky) #29168

VarDumper

  • Add caster for WeakReference instances of PHP 7.4 (nicolas-grekas) #31130
  • Add link to source next to class names (nicolas-grekas) #30301
  • Add caster for OpenSSL X.509 resources (nicolas-grekas) #29821
  • Use hyperlinks in CliDescriptor (ogizanagi) #29613
  • Add support for links in CliDumper (nicolas-grekas) #29235

HttpKernel

  • Add RealHttpKernel: handle requests with HttpClientInterface (fabpot) #30625
  • Prevent search engines from indexing dev applications (GaryPEGEOT) #30325
  • Add a "short" trace header format for HttpCache, make header configurable (mpdude) #30964

DependencyInjection

  • Add a "require" env var processor (mpdude) #30897
  • Add a "trim" env processor (ogizanagi) #29781
  • Add a "default" env processor (jderusse) #28976
  • Replace "nullable" env processor by improving the "default" one (nicolas-grekas) #30504
  • Add support for "wither" methods - for greater immutable services (nicolas-grekas) #30212
  • ServiceProviderInterface, implementation for ServiceLocator (kejwmen) #25707
  • Deprecate non-string default envs (ro0NL) #27808
  • Add an url EnvProcessor (jderusse) #28975
  • Add ReverseContainer: a locator that turns services back to their ids (nicolas-grekas) #30334
  • Add support for deprecating aliases (j92, Renan) #29968
  • Invokable Factory Services (zanbaldwin) #30255
  • Add information about deprecated aliases in debug:autowiring (XuruDragon) #30075

Form

  • Add row_attr to form theme (alexander-schranz) #30320
  • Add help_html (mpiot) #29861
  • Add label_translation_parameters, help_translation_parameters and attr_translation_parameters options to base form type (webnet-fr) #28635
  • Add block prefix to csrf token field (alexander-schranz) #29862
  • Allow setting label attributes declared in label_attr (AngelFQC) #31220
  • Add intl/choice_translation_locale option to TimezoneType (ro0NL) #31294
  • Keep preferred choices order in ChoiceType (vudaltsov) #30985
  • Remove default option grouping in TimezoneType (ro0NL) #31293
  • Add intltimezone input to TimezoneType (ro0NL) #31195
  • Add file links for described classes in debug:form command (yceruto) #30826
  • Show all option normalizers on debug:form command (yceruto) #31082
  • TransformationFailedException: Support specifying message to display (ogizanagi) #20978
  • Allow to disable and customize PercentType symbol (Ken Stanley, OskarStark) #30433
  • Be able to specify the input format for times (xabbuh) #30358
  • Deprecate custom formats with HTML5 widgets (xabbuh) #28723
  • Add option to render NumberType as type="number" (xabbuh) #30267
  • Add input_format option to DateType and DateTimeType (fancyweb) #29887
  • Add a convenience method to get the parent form in Twig templates (xabbuh) #28812
  • deprecate some options for single_text widgets (xabbuh) #28721
  • Add new block_prefix option for an easy form theming (yceruto) #29680
  • Add "input" option to NumberType (fancyweb, Bernhard Schussek) #30893

Routing

  • Expose "utf8" option, defaults "locale" and "format" in configuration (Jules Pietri) #30508
  • Do not encode comma in query and fragment (Tobion) #31134
  • Allow invokable route loader services (fancyweb) #30933
  • UrlHelper to get absolute URL for a path (vudaltsov) #30862
  • Allow boolean container parameters for routes (dmaicher) #30379
  • allow using compiled matchers and generators without dumping PHP code (nicolas-grekas) #28865
  • Allow force-generation of trailing parameters using eg "/exports/news.{!_format}" (zavulon) #29599

Inflector

  • Remove "internal" marker from the component (nicolas-grekas) #30810
  • Support pluralization in the inflector (mbabker) #26890

Cache

  • Deprecate all PSR-16 adapters, provide Psr16Cache instead (nicolas-grekas) #29236
  • Add optimized FileSystem & Redis TagAware Adapters (andrerom) #30370
  • Add command for list all available cache pools (Nyholm) #31021
  • Add DSN support for rediss in AbstractAdapter and RedisTrait (alex-vasilchenko-md) #30605

Miscellaneous

  • [FrameworkBundle] Deprecate the Templating component integration (dunglas, fabpot) #21035
  • New PHPUnit assertions for the WebTestCase (Pierstoval, fabpot) #30813
  • [BrowserKit] Add support for HttpClient (fabpot, THERAGE Kévin) #30602
  • [BrowserKit] Rename Client to Browser (fabpot) #30541
  • [Lock] Added MongoDBStore (Joe Bennett) #27648
  • [Lock] Use env variable to create anytype of lock store (jderusse) #30935
  • [Dotenv] Deprecate useage of "putenv" (Nyholm) #31062
  • [TwigBridge] Add template file link to debug:twig command (yceruto) #30827
  • [Config] Deprecate TreeBuilder::root (gharlan) #31027
  • [MonologBridge] Add monolog processors adding route and command info (trakos) #28330
  • [MonologBridge] Disable DebugLogger in CLI (lyrixx) #30339
  • [WebProfilerBundle] Add Pretty Print functionality for Request Content (SamFleming) #28919
  • [WebProfilerBundle] Render the performance graph with SVG (Tom32i) #30450
  • [OptionsResolver] Add a new method addNormalizer and normalization hierarchy (yceruto) #30371
  • [Ldap] Implement pagination (kevans91) #29495
  • [Ldap] Entry move support (kevans91) #29448
  • [Finder] Throw a dedicated exception for non-existing directory (xelan) #30744
  • [Finder] Ignore paths from .gitignore #26714 (amaabdou) #30448
  • [EventDispatcher] swap arguments of dispatch() to allow registering events by FQCN (nicolas-grekas) #28920
  • [Debug] Mimic __toString php behavior in FlattenException (Deltachaos) #28879
  • [Debug] Display more details in the simple error page of Debug (javiereguiluz) #30024
  • [PropertyInfo] Add possibility to extract private and protected properties in reflection extractor (joelwurtz) #30706
  • [Filesystem] Support resources and deprecate using arrays in dumpFile() and appendToFile() (thewilkybarkid) #29661

Be trained by Symfony experts - 2019-06-3 Clichy - 2019-06-3 Clichy - 2019-06-5 Clichy

Symfony 4.2.9 released

$
0
0

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

  • bug #31584 [Workflow] Do not trigger extra guards (@lyrixx)
  • bug #31632 [Messenger] Use "real" memory usage to honor --memory-limit (@chalasr)
  • bug #31599 [Translation] Fixed issue with new vs old TranslatorInterface in TranslationDataCollector (@althaus)
  • bug #31349 [WebProfilerBundle] Use absolute URL for profiler links (@Alumbrados)
  • bug #31541 [DI] fix using bindings with locators of service subscribers (@nicolas-grekas)
  • bug #31568 [Process] Fix infinite waiting for stopped process (@mshavliuk)
  • bug #31551 [ProxyManager] isProxyCandidate() does not take into account interfaces (@andrerom)
  • bug #31335 [Doctrine] Respect parent class contract in ContainerAwareEventManager (@Koc)
  • bug #31421 [Routing][AnnotationClassLoader] fix utf-8 encoding in default route name (@przemyslaw-bogusz)
  • bug #31510 Use the current working dir as default first arg in 'link' binary (@lyrixx)
  • bug #31524 [HttpFoundation] prevent deprecation when filesize matches error code (@xabbuh)
  • bug #31535 [Debug] Wrap call to requir _once in a try/catch (@lyrixx)
  • bug #31477 [PropertyAccess] Add missing property to PropertyAccessor (@vudaltsov)
  • bug #31479 [Cache] fix saving unrelated keys in recursive callback calls (@nicolas-grekas)
  • bug #31438 [Serializer] Fix denormalization of object with variadic constructor typed argument (@ajgarlag)
  • bug #31445 [Messenger] Making cache rebuild correctly when message subscribers change (@weaverryan)
  • bug #31442 [Validator] Fix finding translator parent definition in compiler pass (@deguif)
  • bug #31475 [HttpFoundation] Allow set 'None' on samesite cookie flag (@markitosgv)
  • bug #31456 Remove deprecated usage of some Twig features (@fabpot)
  • bug #31207 [Routing] Fixed unexpected 404 NoConfigurationException (@yceruto)
  • bug #31261 [Console] Commands with an alias should not be recognized as ambiguous when using register (@Simperfit)
  • bug #31371 [DI] Removes number of elements information in debug mode (@jschaedl)
  • bug #31418 [FrameworkBundle] clarify the possible class/interface of the cache (@xabbuh)
  • bug #31411 [Intl] Fix root fallback locale (@ro0NL)
  • bug #31377 [Console] Fix auto-complete for ChoiceQuestion (multi-select answers) (@battye)
  • bug #31380 [WebProfilerBundle] Don't filter submitted IP values (@javiereguiluz)

Want to upgrade to this new release? Fortunately, because Symfony protects backwards-compatibility very closely, this should be quite easy.Read 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.


Be trained by Symfony experts - 2019-06-3 Clichy - 2019-06-3 Clichy - 2019-06-5 Clichy

Symfony 4.3.0-RC1 released

$
0
0

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

  • bug #31650 Create an abstract HTTP transport and extend it in all HTTP transports (@bocharsky-bw)
  • feature #31641 [HttpClient] make $response->getInfo('debug') return extended logs about the HTTP transaction (@nicolas-grekas)
  • feature #31571 [Contracts] split in one package per sub-contracts (@nicolas-grekas)
  • bug #31625 [Messenger] Disable the SchemaAssetsFilter when setup the transport (@vincenttouzet)
  • bug #31621 [Messenger] Fix missing aut _setup for RedisTransport (@chalasr)
  • bug #31584 [Workflow] Do not trigger extra guards (@lyrixx)
  • bug #31632 [Messenger] Use "real" memory usage to honor --memory-limit (@chalasr)
  • bug #31610 [HttpClient] fix handling exceptions thrown before first mock chunk (@nicolas-grekas)
  • bug #31615 Allow WrappedListener to describe uncallable listeners (@derrabus)
  • bug #31599 [Translation] Fixed issue with new vs old TranslatorInterface in TranslationDataCollector (@althaus)
  • bug #31565 [Mime][HttpFoundation] Added mime type audio/x-hx-aac-adts (@ifaridjalilov)
  • bug #31591 [FrameworkBundle] fix named autowiring aliases for TagAwareCacheInterface (@nicolas-grekas)
  • bug #31590 [Cache] improve logged messages (@nicolas-grekas)
  • bug #31586 [HttpClient] display proper error message on TransportException when curl is used (@nicolas-grekas)
  • bug #31349 [WebProfilerBundle] Use absolute URL for profiler links (@Alumbrados)
  • bug #31541 [DI] fix using bindings with locators of service subscribers (@nicolas-grekas)
  • bug #31568 [Process] Fix infinite waiting for stopped process (@mshavliuk)

Want to upgrade to this new release? Fortunately, because Symfony protects backwards-compatibility very closely, this should be quite easy.Read 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.


Be trained by Symfony experts - 2019-06-3 Clichy - 2019-06-3 Clichy - 2019-06-5 Clichy
Viewing all 3061 articles
Browse latest View live