In his famous keynote at OSCON 2002, Lawrence Lessig talked about the "free culture" and the way "creativity and innovation always build on the past".
The video is a must see for anyone working with or on Open-Source projects. Even if Lawrence does not talk explicitly about Open-Source in the first part of his talk, his arguments are still valid for Open-Source projects.

In the last part, we have moved some code to ProductForm. Today, we will enhance the actions even more by moving code to the View and by using some nice shortcuts provided by symfony for common situations.

Very busy week for symfony: completed the integration of Doctrine in symfony 1.2 (including a new symfony + doctrine book), symfony 1.1.2 bugfix version released, new filtering system based on the form framework and lots of new plugins released.

In the last part, we have seen how to move code from the Controller to the Model. The principle is quite simple, you want thin controllers and fat models.
Today, we will see how the new form framework can help us keep this clean separation of concerns.

Today, we will start by refactoring some actions from the product module.
As symfony is modeled after the MVC design pattern, Vince was pretty confident that he did the separation of concerns pretty well.
The Controller role is to get data from the Model and pass them to the View.
Pretty simple, no?

Refactoring implies a lot of changes in the code. It means that you need a way to check that you don't break anything during the process. So, before beginning the refactoring session, I asked Vince about its unit and functional test suite.
But Vince had no unit or functional tests. So, we decided to write some functional tests before starting the refactoring.

Some time ago, Vince, a seasoned PHP developer, asked me to have a look at his very first symfony project, a product store.
As the mistakes he did were quite common, I decided to tell you the story of this refactoring session in the hope you will learn as much as Vince did.

This week, the second edition of the symfony camp was held, with more than 80 attendees. In the technical talks, the great new features of symfony 1.2 were shown and the future of symfony 2 was outlined. Besides, the Symfony community showed this week its strength with a massive support for symfony inclusion in NetBeans.

NetBeans, the open-source development environment sponsored by Sun, is planning to include support for PHP frameworks in its upcoming versions. As there are so many PHP frameworks, NetBeans developers have organized a public election to choose the two PHP frameworks that will be initially supported.

Symfony continued this week adding cool new features for the upcoming 1.2 version. The routing framework will be refactored to allow further customization and complete RESTful architecture. In addition, Propel plugin development showed an immense activity during this week.

Jon wants to validate a form value but the validation depends on another form field.
As Jon does not know how to do it with symfony 1.1, he called the expert.
This post will explain how to accomplish this kind of conditional validation by using a post validator.

Yesterday, I have committed the first slew of changes to the routing framework.
Thanks to this refactoring, developers have new opportunities to customize the routing and this will allow very cool features in the very near future. But today, let's dive into the goodness of the symfony 1.2 routing framework.