Cleaned the patch, found the truly bug within isValid() and
isValidPartial() which causes loss of data with SubForms and
ElementsBelongTo.

public function isValid|isValidPartial
{
...
// This handles BelongsTo and returns in all cases, even without
// belongsTo Array Notation the data for the current (Sub)Form
$data = $this->_dissolveArrayValue($data, this->getElementsBelongTo());
...
// Here is the bug which eats SubForm data when descending deeper
// into $data as this is already done by dissolveArrayValue and will
// be done in the next cycle as well
if (isset($data[$key])) {
$valid = $form->isValid($data[$key]) && $valid;
}
...
}

Posted by Kai Uwe (kaiuwe) on 2010-03-09T10:41:08.000+0000

This is a bad idea: ??Invalid name provided; must be unique per (Sub)Form??

Example:

Old price:
New price:

Or

Posted by Christian Albrecht (alab) on 2010-03-09T10:55:31.000+0000

Kai Uwe the current implementation as found in the source of Zend Framework 1.10.2
simply overwrites your equal named submit buttons without notice.

Hi Christian,
I know the bug in the current version, but your patch also doesn't solve the problem.
Another idea: I think the Zend_Form class is not the right place. This part is better for decorators (Callback, ViewHelper, ViewScript) and/or the view.