Matthew, Eventhough I see it's use; in my current setup, setElementsBelongTo() doesn't offer me the solution I was hoping for. But maybe I am overlooking something.
In short (for examplary purposes) this roughly is what I have: ===================== ## a few generic forms like this one: class Form_ResourceDelete extends Zend_Form { protected $_name = 'resourceDelete'; public function init() { $this->setName( $this->_name ) ->setMethod( 'post' ) ->setAttribs( array( 'accept-charset' => 'utf-8' ) ) ->setDecorators( array( 'PrepareElements', array( 'ViewScript', array( 'viewScript' => 'resource/partials/form-delete.phtml' ) ), 'Form' ) ); $decorators = array( 'ViewHelper', 'Label', 'Errors' ); $resourceId = new Zend_Form_Element_Hidden( 'resourceId' ); $resourceId->setDecorators( $decorators ); // I add a few validators too $submit = new Zend_Form_Element_Button( 'submit' ); $submit->setDecorators( $decorators ) ->setAttribs( array( 'type' => 'submit', 'escape' => false ) ); } public function setResourceId( $resourceId ) { $this->resourceId->setValue( $resourceId ); $this->_updateElements(); return $this; } protected function _updateElements() { $this->setElementsBelongTo( $this->_name . '_' . $this->resourceId->getValue() ); // actually much more is happening here, so this function isn't as redundant as it looks } } ## a ViewScript decorator along the lines of: <? $form = $this->element; $form->setAction( $this->url( array( 'module' => 'cms', 'controller' => 'page-manager', 'action' => 'delete' ) ) ); ?> <div> <?= $form->resourceId->renderViewHelper(); ?> <?= $form->submit->renderViewHelper(); ?> </div> ## a partialLoop viewhelper that iterates through all pages along the lines of: <? $resourceDeleteForm = new Form_ResourceDelete(); ?> <div class="page"> <?= $this->title ?> <?= $resourceDeleteForm->setResourceId( $this->id ); ?> // and then some other resource option forms such as "sort up" "sort down" "edit" etc.... </div> ===================== Now, two problems occur. One: it seems I have to clone the Form in the partialLoop viewhelper in order to let the setElementsBelongTo() have effect. Otherwise it simply renders all forms with namespaces containing the first resourceId I assigned in the partialLoop's first iteration (see _updateElements method in my Form). Two: I have a generic deleteAction() in my controller which validates the form: $deleteForm = new Form_ResourceDelete(); if( $deleteForm->isValid( $formData ) ) { // etc } But this doesn't work of course, since I am unable to determine the namespace of the Form up front. Otherwise I could do setElementsBelongTO( $namespace ) right before validating. So, I am kind of stuck here. If you, or anyone else, has some pointers on how I could address this issue, I'ld love to here it. Thanks up front. Matthew Weier O'Phinney-3 wrote: > > -- fire-eyed-...@hotmail.com <fire-eyed-...@hotmail.com> wrote > (on Wednesday, 01 April 2009, 12:59 PM +0000): >> I wasn't aware of the setElementsBelongTo method. I will look into that. > > It was created in large part for this very purpose. A common pattern in > PHP is to namespace your forms using array notation, and this was built > into Zend_Form. > >> Are you sure that it will prefix elements with "<name>-" is stead of >> "<name>_" >> (dash instead of underscore?). If so, I believe this is not Javascript >> compliant (or at least not cross platform/browser). To my knowledge some >> (or >> maybe all?) Javascript engines have trouble with addressing elements with >> dashes in their id's, since a dash is simply a minus sign. >> >> So I would not be able to do: >> document.forms[0].hidden-elements-id. >> >> I know this maybe a little oldskool, and it would be possible with DOM: >> document.getElementById( 'hidden-elements-id' ); > > Dashes are acceptable in DOM IDs (the HTML specification specifically > lists that as a valid ID character). Typical JS usage anymore uses > getElementById() -- or, even more typically, proxies to that via > library-specific mechanisms; I cannot remember the last time I used > document.forms to retrieve form elements, honestly. > > <snip> > > -- > Matthew Weier O'Phinney > Software Architect | matt...@zend.com > Zend Framework | http://framework.zend.com/ > > -- View this message in context: http://www.nabble.com/Disable-id-attribute-for-form-elements--tp22821260p22832122.html Sent from the Zend Framework mailing list archive at Nabble.com.