Hi there~ I'm relatively new to ZF but have enjoyed using it so far. The main issue I've had with ZF is with it's Form and Decorator aspects. After going through God knows how many articles/blogs/posts and what not, I thought I finally had a grasp of it. Things were working okay.
I created a standard set of decorators (for Elements, Buttons and Forms) based on an example I saw. Recently however, I realised that I needed to add in some File Input fields into one of the forms. None of the above decorators worked with it. At which point, I decided to use ViewScripts on all the forms since it provides greater room to stylise/organise the form. The code I'm currently using, looks something like the following: site/application/forms/RegisterForm.php class ProjectStartContactPersonForm extends Gid_Form { public function init () { $this->setAction('') ->setMethod('post') ->setAttrib('id','formStartProject') ->setAttrib('enctype', 'multipart/form-data'); $this->addElement('text', 'textName', array('label' => 'Given Name')); $oName = $this->getElement('textName') ->setRequired(true) ->setDecorators(array('ViewHelper', 'Errors')); $this->addElement('file', 'filePhotograph'); $oPhotograph = $this->getElement('filePhotograph') ->setRequired(true); $this->addElement('submit', 'submitRegister', array('label' => 'Done')); $oContactPersonSubmit = $this->getElement('submitRegister'); $oContactPersonSubmit->setDecorators(array('ViewHelper', 'Errors')); $this->setDecorators(array(array('ViewScript', array('viewScript' => 'forms/RegisterForm.phtml')))); } } site/application/views/scripts/forms/RegisterForm.phtml <div id='iDivRegister'> <form action='' method='post'> <table> <tr> <td><label for='textName'>Name:</label></td> <td><?php echo $this->element->textName; ?></td> </tr> <tr> <td><label for='filePhotograph'>Photo:</label></td> <td><?php echo $this->element->filePhotograph; ?></td> </tr> <tr> <td></td> <td><?php echo $this->element->submitRegister; ?></td> </tr> </table> </form> </div> >From RegisterForm.php I had to change $this->addElement('file', 'filePhotograph', array('label' => 'Photo')); to get it to work. prior to that, the File Input element was being displayed twice. Additionally, if ->setDecorators(array('ViewHelper', 'Errors')) was attached to the File Input object, it would throw the error "Warning: No file decorator found... unable to render file element in C:\xampp\xampp\php\PEAR\Zend\Form\Element.php on line 1929". I honestly can't understand what the issue is or how I'm supposed to resolve it. All the searching and reading I did lead me to more questions and no solution. Some of them dealt with the lack of a File Input Class in ZF (which I believe was a somewhat early release), while others used custom classes for things which didn't really clarify anything for me. Currently, the File Input Element is rendered as follows: <tr> <td><label for='filePhotograph'>Photo:</label></td> <td> <dt id="filePhotograph-label"> </dt> <dd><input type="file" name="filePhotograph" id="filePhotograph"></dd> </td> </tr> I would like to get it outside of those dt/dd tags (which suggest the default ZF Decorators are being applied). ZF Documentation I find stragely lacking in the various methods/variables/parameters to use. If anyone knows of a better reference, it's sure to help a great deal. I would greatly appreciate any help anyone can provde me on this. Thanks~ -- View this message in context: http://www.nabble.com/Zend_Form-File-Element---Decorator---Extremely-Confuzzled-tp25365664p25365664.html Sent from the Zend Framework mailing list archive at Nabble.com.