Well just to conclude this, I saw an example on one of the symfony docs about overwriting the formatRow method.
Firstly, my big thanks to you Sid as I would not have gotten this far without your help .... the community again has come to the rescue. Now for anyone that may find this useful in future here is how it looks in the end: My form consists of some dynamic form fields created based on values sent in an array when the form is constructed: public function __construct($extra_inputs = array()) { $this->extra_inputs = $extra_inputs; parent::__construct(); } In addition I had to create my own custom widget which is essentially just an ajax link to an action that forwards the value of one input box to the action, adds that value to a session array, sends the session array to the form using the $extra_inputs parameter above and redisplays the form in the div with the new input box for that value added. So, my difficulty was that each new extra_input needed to use that ajax link widget again alongside it but would forward to a Remove action to remove that input from the session variable and hence from the form. What I needed was that each new dynamic extra_input and its associated Remove ajax link widget to be displayed one per line. My decorator class hence looks like such and I know the names can cause some giggles but hey :P : class mailAnalByRecip extends sfWidgetFormSchemaFormatter { protected $rowFormat = "\n%error%\n<span class=\"formRow\">\n<span class=\"formLabel\">%label%</span>\n<span class=\"formField\">%field%\n%help%</span></span>\n%hidden_fields%", $helpFormat = '<span class="fieldHelp">%help%</span>', $errorRowFormat = "<span>\n%errors%<br /></span>\n", $errorListFormatInARow = "<ul>%errors%</ul>\n", $errorRowFormatInARow = "<li class=\"error\">↓ %error% ↓</li>\n", $namedErrorRowFormatInARow = "<li class=\"error\">↓ %error% ↓</li>\n", $decoratorFormat = "%content%"; protected $fields_to_format = array(); public function __construct(sfWidgetFormSchema $widgetSchema, $fields_to_format) { $this->fields_to_format = $fields_to_format; parent::__construct($widgetSchema); } public function formatRow($label, $field, $errors = array(), $help = '', $hiddenFields = null) { foreach ($this->fields_to_format as $field_name) { if (strpos($field, $field_name) !== false && strpos($field, 'type="text"') !== false) { $field = '<span class="field_row">'.$field; } else if (strpos($field, $field_name) !== false && strpos($field, '<a') !== false) { $field = $field.'</span>'; } } $row = parent::formatRow($label, $field, $errors, $help, $hiddenFields); return $row; } } And in my form class at the very end of the configure() method: $decorator = new mailAnalByRecip($this->widgetSchema, $this->extra_inputs); $this->widgetSchema->addFormFormatter('custom', $decorator); $this->widgetSchema->setFormFormatterName('custom'); So there we go. A form class that dynamically creates widgets based on values in an array, as well as dynamically creating a custom ajax link widget and keeping the input and its ajax link widget associated visually using a custom form decorator class to add spans before and after the two widgets. WHEW! That was one HELLUVA learning experience LOL On Tue, Feb 23, 2010 at 10:09 AM, Sid Bachtiar <sid.bacht...@gmail.com> wrote: > You attach your decorator class to your form, e.g.: > > class yourForm extends sfForm > { > function configure() > { > /* configure your fields */ > > $decorator = new yourFormFormatter($this->widgetSchema); > $this->widgetSchema->addFormFormatter('custom', $decorator); > $this->widgetSchema->setFormFormatterName('custom'); > } > } > > On Tue, Feb 23, 2010 at 8:55 PM, Gareth McCumskey <gmccums...@gmail.com> > wrote: >> Just a question.... if I overwrite the formatRow method how do I >> return the newly formatted row to wherever.... >> >> eg >> >> public function formatRow($label, $field, $errors = array(), $help = >> '', $hiddenFields = null) >> { >> /*Do stuff to make $field from >> <input maxlength="50" type="text" name="test[first_name]" >> id="test_first_name" /> >> into >> <span><input maxlength="50" type="text" name="test[first_name]" >> id="test_first_name" />*/ >> >> //Now what? >> } >> >> On Tue, Feb 23, 2010 at 9:43 AM, Sid Bachtiar <sid.bacht...@gmail.com> wrote: >>> Actually I got very curious and did an experiment myself.Parameter >>> $field turns out to be a string like: >>> >>> '<input maxlength="50" type="text" name="test[first_name]" >>> id="test_first_name" />' >>> >>> So I guess the solution would be a little bit hacky, involving some >>> regex to detect which field it is and give it a different format >>> (e.g.: add <span> prefix on one field and append </span> on the second >>> field) :-\ >>> >>> On Tue, Feb 23, 2010 at 8:23 PM, Sid Bachtiar <sid.bacht...@gmail.com> >>> wrote: >>>> If you look in sfWidgetFormSchemaFormatter class, you could probably >>>> override method: >>>> >>>> public function formatRow($label, $field, $errors = array(), $help = >>>> '', $hiddenFields = null) >>>> >>>> detect the special field through the $field parameter and give it a >>>> different formatting. >>>> >>>> On Tue, Feb 23, 2010 at 8:21 PM, Sid Bachtiar <sid.bacht...@gmail.com> >>>> wrote: >>>>> Oh I just understood why you can't do it LOL sorry >>>>> >>>>> On Tue, Feb 23, 2010 at 8:20 PM, Sid Bachtiar <sid.bacht...@gmail.com> >>>>> wrote: >>>>>> Why can't you do something like this in template: >>>>>> >>>>>> <?php echo $form['not_special_1']->renderRow(); ?> >>>>>> >>>>>> <label>We are special:</label> >>>>>> <span> >>>>>> <?php echo $form['special_a']->render(); ?> >>>>>> <?php echo $form['special_b']->render(); ?> >>>>>> </span> >>>>>> >>>>>> <?php echo $form['not_special_2']->renderRow(); ?> >>>>>> >>>>>> On Tue, Feb 23, 2010 at 8:09 PM, Gareth McCumskey <gmccums...@gmail.com> >>>>>> wrote: >>>>>>> All I really want to do is add a span around two widgets >>>>>>> (<span><widget1 /><widget2 /></span>). I cannot do this in the >>>>>>> template because the template is designed to display many different >>>>>>> form types so the form class needs to define the exact structure of >>>>>>> the form. >>>>>>> >>>>>>> On Tue, Feb 23, 2010 at 9:07 AM, Sid Bachtiar <sid.bacht...@gmail.com> >>>>>>> wrote: >>>>>>>> Don't know about the documentation. I had to look around myself to >>>>>>>> learn about it. >>>>>>>> >>>>>>>> Take a look at this example from my blog: >>>>>>>> http://bluehorn.co.nz/2009/08/31/symfony-12-sfform-formatter-to-add-stars-on-required-fields/ >>>>>>>> >>>>>>>> On Tue, Feb 23, 2010 at 7:57 PM, Gareth McCumskey >>>>>>>> <gmccums...@gmail.com> wrote: >>>>>>>>> Hi guys, >>>>>>>>> >>>>>>>>> I have looked around for the documentation related to creating your >>>>>>>>> own form decorators but the reference to it in the forms book for >>>>>>>>> symfony 1.2 says look in Chapter 5 but there is no chapter 5 o.O >>>>>>>>> >>>>>>>>> Any pointers to where I could find the info would be appreciated. >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Gareth McCumskey >>>>>>>>> http://garethmccumskey.blogspot.com >>>>>>>>> twitter: @garethmcc >>>>>>>>> >>>>>>>>> -- >>>>>>>>> You received this message because you are subscribed to the Google >>>>>>>>> Groups "symfony users" group. >>>>>>>>> To post to this group, send email to symfony-us...@googlegroups.com. >>>>>>>>> To unsubscribe from this group, send email to >>>>>>>>> symfony-users+unsubscr...@googlegroups.com. >>>>>>>>> For more options, visit this group at >>>>>>>>> http://groups.google.com/group/symfony-users?hl=en. >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Blue Horn Ltd - System Development >>>>>>>> http://bluehorn.co.nz >>>>>>>> >>>>>>>> -- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "symfony users" group. >>>>>>>> To post to this group, send email to symfony-us...@googlegroups.com. >>>>>>>> To unsubscribe from this group, send email to >>>>>>>> symfony-users+unsubscr...@googlegroups.com. >>>>>>>> For more options, visit this group at >>>>>>>> http://groups.google.com/group/symfony-users?hl=en. >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Gareth McCumskey >>>>>>> http://garethmccumskey.blogspot.com >>>>>>> twitter: @garethmcc >>>>>>> >>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "symfony users" group. >>>>>>> To post to this group, send email to symfony-us...@googlegroups.com. >>>>>>> To unsubscribe from this group, send email to >>>>>>> symfony-users+unsubscr...@googlegroups.com. >>>>>>> For more options, visit this group at >>>>>>> http://groups.google.com/group/symfony-users?hl=en. >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Blue Horn Ltd - System Development >>>>>> http://bluehorn.co.nz >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Blue Horn Ltd - System Development >>>>> http://bluehorn.co.nz >>>>> >>>> >>>> >>>> >>>> -- >>>> Blue Horn Ltd - System Development >>>> http://bluehorn.co.nz >>>> >>> >>> >>> >>> -- >>> Blue Horn Ltd - System Development >>> http://bluehorn.co.nz >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "symfony users" group. >>> To post to this group, send email to symfony-us...@googlegroups.com. >>> To unsubscribe from this group, send email to >>> symfony-users+unsubscr...@googlegroups.com. >>> For more options, visit this group at >>> http://groups.google.com/group/symfony-users?hl=en. >>> >>> >> >> >> >> -- >> Gareth McCumskey >> http://garethmccumskey.blogspot.com >> twitter: @garethmcc >> >> -- >> You received this message because you are subscribed to the Google Groups >> "symfony users" group. >> To post to this group, send email to symfony-us...@googlegroups.com. >> To unsubscribe from this group, send email to >> symfony-users+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/symfony-users?hl=en. >> >> > > > > -- > Blue Horn Ltd - System Development > http://bluehorn.co.nz > > -- > You received this message because you are subscribed to the Google Groups > "symfony users" group. > To post to this group, send email to symfony-us...@googlegroups.com. > To unsubscribe from this group, send email to > symfony-users+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/symfony-users?hl=en. > > -- Gareth McCumskey http://garethmccumskey.blogspot.com twitter: @garethmcc -- You received this message because you are subscribed to the Google Groups "symfony users" group. To post to this group, send email to symfony-us...@googlegroups.com. To unsubscribe from this group, send email to symfony-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/symfony-users?hl=en.