views:

50

answers:

2

How do I tell the Zend_Form that I want an element (and it's ID-label, etc) to use another ID value instead of the element's name?

I have several forms in a page. Some of them have repeated names. So as Zend_Form creates elements' IDs using names I end up with multiple elements with the same ID, which makes my (X)HTML document invalid.

What is the best solution to fix this, given that I really have to stick with using the same element names (they are a hash common to all forms and using the Zend_Form Hash Element is really out of question)?

A: 

Zend_Form_Element has a method called setAttribs that takes an array. You may be able to do something like $element->setAttribs(array('id' => "some_id"));

or you can do $element->setAttrib('id', 'some_id');

Chris Gutierrez
A: 

Thanks, Chris Gutierrez.

However, as I said, I needed to get ride of the default decorator generated IDs like -label. Wiht the $element->setAttribs() it is not possible, however.

So based on http://framework.zend.com/issues/browse/ZF-7125 I just did the following: $element->clearDecorators(); $element->setAttrib('id', 'some_id'); $element->addDecorator("ViewHelper");

Whoever sees this: please note this was enough for what I needed. But may not be for you (the default settings has more than the viewHelper decorator).

Henrique Vicente