Cover of the book Symfony 5: The Fast Track

Symfony 5: The Fast Track is the best book to learn modern Symfony development, from zero to production. +300 pages showcasing Symfony with Docker, APIs, queues & async tasks, Webpack, SPAs, etc.

A week of symfony #216 (14->20 February 2011)

Symfony2 frantic development activity included this week some massive commits such as adding support for merging security configurations, implementing single-pass config loading with intelligent merging and moving common configuration classes to a new Config component. In addition, the new AsseticBundle was integrated in Symfony2, allowing a much more powerful and flexible way to handle web assets. Lastly, 1.3.9 and 1.4.9 maintenance versions were released.

Development mailing list

Symfony2 development highlights


  • f9138d3: [FrameworkBundle] implemented single-pass config loading with intelligent option merging for FrameworkExtension (restructured config format to make processing more straightforward and added important changes that might break existing configs)
  • 743f25a: [DependencyInjection] create explicit factoryClass property for Definitions
  • 523e652: [FrameworkBundle] fixed the way profiler configuration works
  • e540349: removed the need to define getNamespace() and getPath() in bundles
  • f56a6ef: [HttpFoundation] File/File full coverage
  • bd97471: [HttpKernel] added test coverage for cache warming
  • c251a36: [HttpFoundation] added tests for Cookie
  • 9ba2943, c5fb96b: [HttpKernel] added unit tests for Kernel
  • 39ed62d: translated validators resources into Japanese
  • 42a3e40: translated validators resources into Spanish
  • 6ff4120, 09a50c3: [Form] added Form option by_reference so that objects received from parent forms are modified by reference when this option is true (the default)
  • 74d0ac8: [Form] cleaned up ValueTransformerInterface (removed CollectionToStringTransformer)
  • 0b8fef2: [Security/DependencyInjection] adds support for merging security configurations. All passed config arrays will be transformed into the same structure regardless of what format they come from (massive commit which adds lots of methods and a new architecture)
  • 099b9de: [FrameworkBundle] integrated Configuration\Builder class for config merging and normalization
  • 7ad4f99: [HttpFoundation] File/UploadedFile, MimeTest, Exception full coverage
  • b9ed739: fixed RedirectController - removed parmanent attribute before generate new url, added tests
  • bebdcb2: [HttpKernel] added response cache-control modification if page is composed of ESIs
  • ea4ab77: [HttpKernel] HttpCache now sends maxage=0 cache-control directive in case of Esi presence
  • 41bf849: [HttpFoundation] Request coverage
  • 9f30e42: added --debug/-d and --env/-d to console
  • d447d22: [DoctrineBundle, DoctrineAbstractBundle, DoctrineMongoDBBundle] added container aware fixture loader
  • 5b95805, f51dafc: [Form] added data_constructor option to Form
  • 9f77cab: [TwigBundle] cast non-array resources argument to array in form_field() twig function
  • 5d87d83: optimized duplication of Request objects
  • a8ec9b2: moved duplicated files to a new Config component (reverted)
  • 82a8a3f: [WebProfilerBundle, FrameworkBundle] fixed events panel to handle closures correctly
  • f530808: moved Resource to the Config component (reverted)
  • fe694de, 2ed0b97, 5bf5933: [Routing] made trailing slashes in urls optional
  • 8cb3a23, e929bc5: [FrameworkBundle, HttpKernel] allow any 2xx response code in a subrequest
  • d85a839: [Routing] avoid locating imported resources as files unless they resolve to a FileLoader
  • beaaa6d: [BrowserKit] fixed Response::__toString() method to take care of multiple header
  • 19bbafc: [Security] refactored security context (reverted)
  • 9749da6: [Security] performance improvements of PermissionGrantingStrategy
  • b3cb02a: [FrameworkBundle/Routing] added 'type' option for main Router resource (and expose this in FrameworkExtension config)
  • a5cfc22: [Security/DependencyInjection] updated SecurityBundle's configuration and some bug fixes in DIC config classes
  • 8684055: fixed calling * scripts when not in the root of the project
  • f1633f8: merged and
  • b716b70: added missing console commands, proxy cache warmer and hydrator cache warmer to DoctrineMongoDBBundle
  • 1292925: [AsseticBundle] initial entry of assetic integration
  • 5c905be, 8588d55: moved common configuration classes to a new Config component
  • 20e31cd: [HttpKernel] added some details for two commonly encountered errors in Kernel.php and HttpKernel.php
  • b9f4eab, d22743c: [Security/Acl] added pre-generated schemas
  • 0643dc4: [Security] added a priority attribute to security voters
  • 5c7fe8f: [Security] simplified encoder factory implementation
  • bc283f1: [Security] removed security.authentication_provider tag
  • b685b3a: [Security] added logout success handler
  • af81bca, 5eee0db: [Templating] refactored the component
  • 73cd26e: [Serializer] added the ability to add attributes to nodes using an array key begining with @
  • 4972bf6: [DependencyInjection] made getXsdValidationBasePath() and getNamespace() methods from DIC Extension class optional
  • 81765f8: [DependencyInjection] fixed XML loader
  • 7dbc09e: [Form] fixed reference handling in forms. Sometimes data wasn't written into the domain object, resulting in failed validation
  • 922cb0a: updated vendors script to allow checkout of a specific commit
  • b8d5740: [Security] allowed authentication tokens to hold attributes
  • 14aa95b: added the concept of a main DIC extension for bundles. This allows for better conventions and better error messages if you use the wrong configuration alias in a config file
  • 7f182bd, 62e3053: implicitly load all registered bundles, all loading is now handled by load(), disable loading of an extension explcitly via setting the extension config to false
  • a29a413: made DIC extensions members of the Container instead of static members
  • 1230bc6: [AsseticBundle] updated config for new LESS filter
  • cd5b603: [AsseticBundle] added local caching to the controller
  • e62031a: [AsseticBundle] fixed closure .jar configuration
  • dfd9218: [Security/Http] added CSRF protection to the form-login
  • 82c6844: [Security] moved Security classes out of DoctrineBundle, cleaned-up SecurityExtension accordingly
  • 53f3ff8: [Security] added a chain user provider
  • 1593d6f: [Form] added method FieldInterface::isEmpty()
  • 40acc6a: [Form] fixed ChoiceField::isChoiceSelected() to differentiate between zero and empty
  • 14c3518: [Form] fixed if a DateField or TimeField is displayed with select boxes, either all or no select box must have a value selected
  • df011ed: [Form] fixed isXXXWithinRange() methods in TimeField and DateField to ignore empty dropdowns
  • 9569262: [Form] fixed date handling classes to use server timezone by default
  • 077d192: added the support of the validation in the Builder
  • 990910d: converted SwiftmailerBundle to use a Configuration class
  • 0a33cbb: [Finder] added support for relative path
  • c5e4dfb: [DependencyInjection] added to InvalidArgumentException messages to clarify when a service is given an invalid tags value
  • 6b12c21: moved DependencyInjection\Configuration to Config\Definition
  • 76262b2: fixed spool handling


New job postings

  • Symfony & front-end developer at - full-time based in Mountain View, California (USA) - Contact: jobs{at}

New plugins

  • sfRssPP: provides an easy way to get one or more RSS feeds without PHP code.
  • stashboardTasks: gives you tasks to update your Stashboard installation. Just put your API credentials in app.yml, and update statuses from the command line.
  • sfWebmoneyAuth: provides authentication and authorization features above the standard security feature of symfony.
  • xTool: (no description)
  • sfFlashWidget: inspired by the sfWidgetFormInputFileEditable widget of Fabien Potencier (a symfony included class). It installs a new widget that represents an upload HTML input tag (template -able) for flash objects.

Updated plugins

  • sfProjectAnalyser:
    • fixed getLibsOutput() and some typos
  • ExtjsGenerator:
    • added new override to allow keeping scroll position on grid reload
    • fixed a bug with GroupingListView that was causing groups to loose their collapsed state on store reload
  • sdInteractiveChart:
    • updated the automated js include code
    • improved commenting
    • updated README
  • ahDoctrineEasyEmbeddedRelations:
    • use Doctrine_Core instead of Doctrine
  • csDoctrineActAsSortable:
    • use Doctrine_Core instead of Doctrine
  • apostrophePeople:
    • fixed a bug in the headshot template
    • search results link to the best engine page for the person
    • sorting people slot normal view
    • you can remove a headshot by clicking to change it, then using the trashcan and saving your selection
    • people slots link to the best people engine page for the individual
    • alphabetized the categories in the people plugin
  • apostrophe:
    • made googleAnalytics into a partial
  • apostropheBlog:
    • refactored the best-blog-post algorithm out to aEngineTools where the people plugin can benefit from it

New symfony powered websites

  • Article Gold: (English) Popular Articles Directory built on Symfony 1.4

New symfony bloggers

They talked about us

Help the Symfony project!

As with any Open-Source project, contributing code or documentation is the most common way to help, but we also have a wide range of sponsoring opportunities.

A week of symfony #216 (14->20 February 2011)

Tweet this


Every week of symfony posts for a long time have a missing </a> closing tag for "New plugins" header.

It breaks every rss feed reader rendering I tried.
@Ymage, thanks for your notice. I'm afraid that wasn't the only markup error. I hope they are all fixed now :)

Comments are closed.

To ensure that comments stay relevant, they are closed for old posts.