What is it?

This has been one of the most requested items I have received from the community, the ability to control your schema visually. Well, now it is possible with the sfDoctrineManagerPlugin. With this plugin it offers you the ability to build your Doctrine schema by using a GUI built using the symfony form framework.

I have considered developing this plugin in the past, but before the form framework this task was a very daunting one. Simply building and maintaining all the forms to control the schema information would have been scary. With the form framework, I was able to generate all my forms by combining the Doctrine schema information with the form objects and instantly I have a set of forms to manipulate this data.

Columns

Add, edit and delete columns from your models.

Columns

Relations

Add, edit and delete relationships between your models.

Behaviors

Behaviors

Enable and disable behaviors on your models.

Columns

This plugin is a good example of how the form framework in symfony can be leveraged to quickly create rich forms to manipulate your data. It implements some practices such as:

  • Totally custom widgets and validators
  • Extending and customizing existing widgets and validators
  • Detecting widget type to use based on the PHP type of variable
  • Embedding forms
  • ...much more

This plugin is available for symfony 1.2 and is in alpha state. Currently only the ability to manage your schema is possible but other features will be added in the future such as:

  • Ability to manage databases.yml
  • Integration with Doctrine migrations for updating your database after altering your schema
  • Ability to query and modify the data in your models from a web interface similar to the functionality phpMyAdmin provides
  • Ability to map relationships by the use of drag and drop functionality similar to how you would in a database designer such as DBDesigner4
  • Execute Doctrine tasks from the web browser
  • Maybe more? If you have ideas you can ping me with them at jonwage [at] gmail.com