Symfony2 repository received this week a massive amount of commits, mostly on Twig, Form, Security and Doctrine components. Twig bundle was heavily refactored to match the important changes introduced in Twig 1.0 RC1, which was also published this week. Security component added a brand-new ACL system and Form component added support for virtual field groups and a FieldFactory mechanism to automatically create fields by introspecting metadata of a class. Meanwhile, in the last weekly IRC meeting, Fabien unveiled some interesting information about Symfony2, including a new way to handle web assests and the expected roadmap until its final release.

Development mailing list

Symfony2 development highlights

Changelog:

  • baf07a1, 1af2122, 3516a04: added converter manager and converter interface including tests
  • cbd6d0a: [DoctrineBundle] added a request param converter for Doctrine
  • f8a88e8, 13fc135, 2ee4252: [HttpFoundation] added ArraySessionStorage for usage in tests
  • 385ad72: [FrameworkBundle] converted the special routing resolver to a DIC compiler pass
  • 8e6a384: [TwigBundle] converted the special Twig Environment class to a DIC compiler class
  • 2985cfa: [FrameworkBundle] converted the special Profiler class to a DIC compiler class
  • 59996bd: [TwigBundle] fixed form.twig calls to {% display %}
  • 46949e2: [DoctrineBundle, DoctrineMongoDBBundle] makes it possible to use shortcuts for defining document or entity classes when using the DaoAuthenticationProvider
  • ba2b1aa: refactored Doctrine*Bundle to allow a much more flexible configuration
  • db5e180: tweaked DI container
  • 6aa750d: [DoctrineBundle] added tests for DoctrineConverter class
  • 46b1b5b: [Security] LogoutListener should not invoke handlers' logout() method if token is empty
  • 500e02d: fixed inconsistency between MongoDB and ORM Annotation Reader definition that lead to a bug in the common code
  • c886d88, 5c73619: [DependencyInjection] forced loading of class file when resolving interface injections
  • b428845: added ACL system to the Security Component
  • 49a3e52: [HttpFoundation] changed the default name of the session to _SESS as using _SESSION does not seem to work with PHP 5.3.
  • 62cd09e: [TwigBundle] replaced the asset tag with an asset function (from {% asset css/foo.css %} to {{ asset('css/foo.css') }}
  • d8b8ae0: [FrameworkBundle, TwigBundle] introduced field_row template for Form rendering
  • b9c2e98: [Form, Locale] implemented LocaleField and added script for updating ICU data
  • 52ecffe: [Validator] implemented Locale constraint
  • 2daa6b5: [TwigBundle] fixed display of DateFields in twig templates
  • a99d8c8: fixed possible duplicate security identities
  • 55a48bc: optimized AclVoter and added unit tests
  • fa7fded: introduced meta-bundle DoctrineAbstractBundle to squash 400+ loc of code duplication from ORM and MongoDB Bundles
  • 302dbd1: refactor Doctrine Bundle to use Symfony DIC Enabled EventManager
  • eb4788e: [DependencyInjection] made service keys and aliases case insensitive (as method names are case insensitive in PHP)
  • 840bd8a: [TwigBundle] removed usage of HelperTokenParser for the 'render' tag
  • 3f492ca: [TwigBundle] removed usage of HelperTokenParser for the js/css tags
  • 5c6b594: [TwigBundle] converted form filters to functions
  • 8b843e2: [TwigBundle] fixed trans tag due to Twig changes
  • ba422e8: [Form] added support for virtual field groups
  • 708c780: [Validator] renamed @Validation constraint to @Set
  • 8513082: [Form, HttpFoundation] improved File and UploadedFile class
  • e9a7531: [Form] added the constrained method Field::isTransformationSuccessful()
  • 48af2fc: [Form, FrameworkBundle, HttpFoundation] the session is now automatically started when a form is CSRF protected
  • acdd5c0: [Form] changed value transformers to throw UnexpectedTypeException instances
  • 114b2cf: [FrameworkBundle] attributes can now be passed when rendering form fields with the PHP renderer
  • 39c9bf1: [Validator] implemented @Ip constraint
  • 9b10c8a: [WebProfileBundle] added more information to the Response content returned when an intercept is redirected
  • 0e487cd: [TwigBundle] replaced current {{ foo }} syntax for translation placeholders to %foo%
  • b60d254: [TwigBundle] added request and session as global variables (removed the '_view' variable from templates, removed the 'flash()' function because it's now available from the session directly)
  • 7b7e83f: removed js and css helpers and Twig integration as they do not work as expected
  • 7fdc61f: [TwigBundle] added a way to register Twig globals from configuration
  • aea712d: [ZendBundle] added a simple way to add new writers (add a service with a zend.logger.writer tag)
  • 1148519: [HttpKernel] unified paths on Windows and *nix
  • 1e27d43: [DoctrineBundle] added class_metadata_factory_name Configuration option
  • 3ab82cb: [FrameworkBundle, Security] created DIC aliases for security providers that are explicit services
  • 598d458: added CompatAssetsBundle to reintroduce the deprecated css/js helpers/tags
  • 4b78c43: [Form] added FieldFactory mechanism to automatically create fields by introspecting metadata of a class
  • c5ef113: DI container optimization
  • da5475e: service visibility changes
  • b5e26d9: [SwiftmailerBundle] added more private services
  • f946355: [TwigBundle] added a form_row() function
  • 584769d: [HttpFoundation] added removeFlash & clearFlashes methods to the Session
  • afc2f96, ed359af: [Templating] added Global variables as they are implemented with Twig
  • 911dbe9: removed a circular reference in the definition of the templating and Twig services (added a new TemplateNameConverter that parses a template name, removed the dependency between the Twig loader and the Templating engine)
  • af8ebea: [DependencyInjection] added automatic detection for service circular references
  • cfd4e21: fixed UniversalClassLoader matching collisions
  • 314defa: added generic encoder factory
  • 9553971: [TwigBundle] allowed Renderer::evaluate() even when Request and Session are not available
  • 2ded40f: [TwigBundle] added a way to easily register extensions from the configuration
  • 964bf43: fixed Security tests failing when Doctrine2 is not present
  • 0c50ca8: [TwigBundle] renderer::evaluate() should ensure the Request is both defined and non-empty
  • 554c86c: [DependencyInjection] added hasInterfaceInjectorForClass() which is helpful for extension loader methods
  • f2ac2a4: changed templating to use setter injection for renderers
  • bc2ca8f: made PHP renderer optional in Templating
  • 3785a99: added visibility to aliases
  • a116199: [DependencyInjection] fixed xml validation for extension in phar archive
  • 50809d2: [TwigBundle] added the security context and the user as global variables when they are defined
  • 10fee8c: [HttpKernel] added escaping to the profiler SQLite storage

Documentation

New plugins

  • sfAmazon: Allows you to manage amazon aws servers from symfony cli. Also includes widgets, validators, and helpers that you can use within your symfony projects.
  • apostrophePeople: a simple system for creating and organizing person profiles (plugin for the Apostrophe CMS).
  • sfPostMark: easy integration with postmarkapp.com.
  • gbRememberMe: changes the behavior of the "remember me" feature of the sfDoctrineGuard plugin, allowing to remember multiple browser instances on multiple computers and detecting cookie theft.

Updated plugins

  • cleverFilesystem:
    • added passive mode capacity for FTP filesystems
  • sfDoctrineNestedSet:
    • fully functional (add, delete, move nodes and subtrees) Doctrine NestedSet plugin
  • sfCKEditor:
    • fixed bug when inserting content with special characters
  • sfDoctrineRestGenerator:
    • fixed XML and YAML unserializer in order to get the root of the data directly
    • have the XML unserializer deal correctly with collections and single records
    • removed useless underscoring of variables from the action body
  • sfDoctrineActAsTaggable:
    • fixed an incompatibility between preloadTags() and the Doctrine query cache
    • the trim line did not work in IE because IE doesn't have String.trim. Switched to jQuery's trim function
    • do not add empty tag names
  • sfYandexYML:
    • added unit tests
  • sfProjectAnalyser:
    • sdded plugin config controls so the user knows its custom config file must be upgraded
    • code cleanup
    • updated doc & roadmap
    • refactored the way the plugin's config controls are done
    • started the "ignore files and objects" feature
    • implemented the "ignore" feature for the partials, applications, classes, modules, actions, templates and layouts
    • fixed wrong count of alerts when using the XML output
    • fixed the color reporting for modules
    • fixed the return code values
    • deleted the sfProjectAnanlyserPlugin from the default config
  • sfFormButtons:
    • changed button_to_url to only set an onclick-Handler, if there is none present
  • apostrophe:
    • you can now see the embedded video at the annotation step fo the "add media" process
    • fixed useless metaDescription slots being created with no page id
    • correctly render normal script src tags for externally hosted JS files such as addthis when the minifier is active
    • fixed slideshows should not say "click for next image" if there is only one image
    • all the slots now extend aSlotActions and aSlotComponents, which are empty extensions of BaseaSlotActions and BaseaSlotComponents
    • all private items in PluginaPage are now protected so aPage can modify them as needed
    • create a lessc compiler object only when needed; let the autoloader find it
    • added $word_limit parameter to getAreaText() and getAreaBasicHtml()
    • added og-meta slot to the layout.php so og meta data can be set and tossed up into the heading from Pages, Blog Posts, and Events
    • fixed Apostrophe reaction when a video is not permitted to be played in your country
    • clear call to action to configure unconfigured media services
    • error404Success and error404Template work together to allow admins to edit / change the error404 page contents
  • apostropheBlog:
    • migrated all events that run from 12am to 12am to have null start and end times (the new representation of an all day event)
    • fixed event slots not being ordered by start date
    • added og-meta information to the event and blog showSuccess
    • set the published_at date on a_page when it is a virtual page corresponding to an a_blog_item
    • fixed a bug that was displaying the the same time twice if the starttime and endtime were the same
    • getQuery was failing for the title search case because it wasn't returning the query
    • event slot typeahead had a refactoring-related bug

New symfony powered websites

They talked about us

Published in #A week of symfony