It’s always nice when you are trying to figure out how to do something and the internet provides.
I’ve been working on a new project “Ymir” for almost a year now and have just started the development path toward the 0.6 release which needs to include some complex searches. And I was not finding an easy way with Propel to join a couple tables that needed to be limited very specifically to simplify the search output. What I needed was to be able to perform a LEFT JOIN with multiple clauses. The second result that I clicked on a google search (it was #8 or #9) was a post from a year and a half a go on how to modify Propel to take complex ON clauses.
Since I am running behind on Spellbook, instead of waiting until the full 0.4 Milestone is complete, I have pushed the development release 0.3.1 to production. This release adds:
1) Characters — anyone with a valid login can have any number of characters.
2) Spell Lists — each character can have any number of spell lists. Each spell list is composed of the class spell lists that define the allowable spells. For example, my current character is an Archivist (3) / Abjurer (3) / Mystic Theurge (2). So he has an Archivist spell list which can use any divine spell caster list (e.g., Cleric, Druid, Paladin, Ranger) and an Abjurer spell list (wizard spells).
3) Known spells — for each list you can select the spells known and the number of known spells per level is enforced for spontaneous casters.
4) Print spell prep lists — for each list you can print a page where you can mark the spells you prepare for a day and use.
There are many useful classes in the Zend Framework, and I definitely want to make use of them where applicable. But embedding the Zend Framework as a plugin to a Symfony project seems like a hacky way to include the few classes you might use. Though I suppose it might be the only way for some people with a hosting provider that limits your resources. Since I don’t have to deal with that hassle, I guess I shouldn’t pass judgement.
I will be packaging and distributing the Zend Framework for my servers (work and at home) just like a package and distribute PEAR installable libraries.
This snippet is a pretty conventional implementation of using a select box as a navigation menu, but it is complete and concise. So if you need a guide on how to perform this bit of JavaScript magic in Symfony, check it out.
I’ve completed Milestone 0.2 of Spellbook. This is not a fully functional product yet. I’ve only implemented the spell CRUD interface — the spell list functionality will be in Milestone 0.4.
The running application is available for data entry.
The Symfony team has released version 1.0!
Symfony is more mature than ever, faster than ever, and more configurable and extendable than ever. A lot of websites officially declare using symfony, and we know of dozens of other applications, either Intranet or Internet, running symfony without any problem. The symfony framework is definitely ready to power complex web 2.0 applications with a lot of users. It has a tremendous amount of documentation and tutorials, including the just-released Definitive Guide to Symfony, a 490p book published by Apress, written by Fabien and me, and free to read online. And you will also find a vibrant community, always ready to give you a hand when starting up a symfony application.
The 1.0 is not just another release. We call it an “enterprise” release, which means that we will keep on maintaining it for a long time (that is, for several years). When a new release of PHP comes with its wagon of BC break, we will update symfony 1.0 to make it compatible. When a bug is found and corrected in one of the components of symfony 1.0, we will update the stable release to make the symfony experience always better.
I am extremely pleased with the framework. It has made my job significantly easier. Thanks and congrats to the symfony team.
I’ll post more on the Symfony framework in the future, but if you are interested in using the framework you should follow the official news on their weblog, or even better subscribe to the RSS feed.