Heading towards symfony 1.0

If you watch the timeline, you probably noticed the important number of updates of these last days. If you opened a ticket, you also probably noticed that more than 160 tickets were fixed since 0.6.3. There are a lot of changes in symfony lately (see the changelog for the full list), and here is a brief overview of the important stuff.

Slots are back. They were killed in their original form (an action that could be called from a template), but they return as lightweight view components that are stored globally, can be defined anywhere and included anywhere as well. And this time, they are fast! They allow for multi-holes layouts, additional tags on a per-action basis, etc. (re-)Read the view documentation to learn more.

Many-to-many relationships are now automatically handled in the admin generator. Based on a patch from noods, this great addition will make your development of backend interfaces even simpler (read the admin generator documentation about this).

The command line interface has been substantially improved.

New CLI tasks contributed by joesimms automate many aspects of the life of a symfony project: init-batch, init-controller, clear-controllers, rotate-logs, purge-logs, enable and disable. Add to that the new freeze and unfreeze tasks and you get a tool that will be used much more frequently now than before. Read the CLI documentation for more information about these new tasks.

CLI improvements include syntax coloring (*nix only) and better exceptions handling. Now type simply $ symfony to get the list of available commands and insert the -t option before the task name to display the stack in case of exception.

setLayout has been added to the action methods. This one has been requested for a long time, under the name "Bring back setLayout!" while it has never been in the trunk... But under the strongest pressure of the community ever, the ability to deactivate or modify layout decoration from the action, and not only from the view.yml, has been added to the framework. Note that the hasLayout() method has not been implemented, replaced by a simple setLayout(false), as described in the view configuration documentation.

AJAX actions have no layout by default. This is another long-demanded evolution and it will simplify greatly the design of AJAX interactions - no more view.yml to write, unless you want specifically to decorate the action result. Will you ever need to use the setLayout method? (read the AJAX documentation to learn more).

pake and phing have been integrated to the trunk. There will be no more foreign dependency for the symfony installation, and it makes the framework easier to deploy. The sandbox, PEAR and SVN versions get more similar, and the symfony command line is even available for a SVN checkout!

Creole, Propel and script.aculo.us libraries were upgraded, to take advantage of the latest bug corrections and enhancements.

my* Classes have been removed from the trunk (apart from myUser, used by many projects) to speed up the execution. In case your application used custom methods added in the my* classes, it still works but you'll have to override the default settings by modifying the factories.yml to link to these classes (as stated in the configuration files documentation). This may break BC in some cases.

Deprecated methods, functions and tasks have been removed (see the details in r1638, r1799 and r1631). If your project still uses deprecated parts of the framework, it's time to do some cleanup!

object_select_tag now has a peer_method option allowing you to display a custom list of related record, in the order you want. Learn more in the Form helpers documentation.

Autoloading is now more flexible and facilitates the integration of foreign libraries - for instance, integrating Doctrine is much simpler now.

YAML files can now contain no YAML at all. It means that if you are not a YAML fan, you can return directly a PHP array of parameters in any YAML configuration file and it will work. The configuration chapter tells you more about it.

Charset is now a real application setting. It normally resolves all internationalization, translation and fillin filter problems with charsets. Refer to the changeset 1752 for more information.

Validators welcome the arrival of the new sfCallbackValidator contributed by amadeus. If you want to reuse an existing function to validate a form input, this is what you need. Syntax and examples are given in the Validation documentation.

In addition to all that, many bugs have been corrected. See the List of bugs closed since 0.6.3 to get an idea of the progress.

The first conclusion to this post is an answer to the ones who wondered if symfony progress had stalled. These people can now agree that taking two weeks off can be a benediction for an open-source project, and that patience is the best virtue.

The second conclusion is that the release 1.0 is getting close. This is what we aim for, and we need your help to finalize it soon. Our objective for the next weeks will be to stabilize the framework rather than add other features. So we kindly ask all developers who are interested in the project to test these changes (a new beta has just been released) and to report all bugs they find.

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.


Very nice job.

the return of slot is cool.
Rock on!
Thanx for all these great improvement :)
Hope you add jquery (and throw prototype away). Some cake guys still did it.

take a look at:
These changes were in my dreams
Thank You
Symfony roxx ... for real :)

Slots are my favourite.
I was one of those to wonder 'if symfony has installed!' But I'm feeling guilty with my words. A fabulous job guys! Thanx from my side
Can't wait for release 1 and Symfony Book ;o) Great framework, very happy that my little contribution (sfThumbnail enhancement) have been integrated in trunk.

Comments are closed.

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