Just a quick bit that I’m sure I will revisit later, but that I wanted to get out there sooner…
When embedded forms are saved, if you want to hook into the form save for the embedded form, use the saveEmbededForms function as save or doSave is never called on the embedded form.
The embedded form has it’s saveEmbeddedForms function called, and then $form->getObject()->save().
I need to get in touch with the Symfony devs and see if we can’t get some clarification on this setup in 2.0, as this “smells” wrong, but maybe it is just me.
One of the biggest problems with any user interface is ensuring the forms and controls are simple and straight forward to use. While Symfony comes with a great many of widgets that you can use in your forms, some of the most common ones are not as user friendly as one would hope.
Over the next week or two I will be releasing (and posting about) a number of symfony widgets that I’ve powered up with a little (or in some cases, a lot) of javascript. The first step, though, will be a plugin that adds jQuery and jQuery UI into your Symfony stack.
Back when I was freelancing as my sole source of income, I was so caught up in being a worker, that I didn’t even realize I wasn’t working towards being an entrepreneur. This article woke me up a bit… too bad it was many months too late! 🙂
So how about the rest of you out there? Are you worker bees, or are you entrepreneurs?
When he mentioned that his database did not support LIKE, I offered another method within Kyle’s comment board. However I had a bit more of detail I wanted to go into, but didn’t have the time to expound then.
Basically, I think many of Kyle’s ideas are spot on, however, the best result may be to simply code a number of queries in, and provide them as fall-back options. Here’s an example in PHP, my preferred language, especially for examples:
$query=$_REQUEST['query'];$max_results=10;$results=array();$queries=array("SELECT * FROM contacts WHERE last_name = '?'","SELECT * FROM contacts WHERE LEFT(last_name, ".strlen($query).") = '?'","SELECT * FROM contacts WHERE first_name = '?'","SELECT * FROM contacts WHERE LEFT(first_name, ".strlen($query).") = '?'",);foreach($queriesas$sql){$results=array_merge($results, fetch_all($sql,$query));if(count($results)>$max_results)break;}
This way, you can return the ones you feel would be most relevant first, but then make sure you can provide for some of the edge cases as well.