У меня есть страница, на которой есть несколько форм. Некоторые формы имеют элемент с тем же именем, что и CustomerID. Это означает, что идентификатор ID элемента ID будет сталкиваться с тем же идентификатором в других формах. Я хотел бы найти чистый способ префикс имени поля с именем формы. Например, PaymentProfile_CustomerID. Предложения?Есть ли способ префикс имени элемента Zend_Form?
До сих пор лучшее, что я смог придумать это: ответ
class MyForm extends Zend_Form
{
public function init()
{
$this->setName("PaymentProfile");
...
$this->_prefixElementNames();
}
private function _prefixElementNames()
{
$elements = $this->getElements();
$formName = $this->getName();
foreach($elements as $e) {
$e->setAttrib('id', $formName . '_' . $e->getName());
}
}
}
UPDATE @ Гарви ниже хорошо работал с простой модификацией.
public function addElement($element, $name = null, $options = null)
{
$e = parent::addElement($element, $name, $options);
if($this->getName())
// I use setAttrib instead of setName because I only want the ID to be changed.
// Didn't want the form data to be prefixed, just the unique HTML identifier.
$element->setAttrib('id', $this->getName() . '_' . $element->getName());
return $e;
}
Я посмотрю и посмотрю, что это делает. Благодаря! – David
Это, по-видимому, самый правильный способ выполнить то, что я пытался сделать. Спасибо, agian. – David
Простите за такой короткий ответ раньше, но у меня не было много времени раньше, но, как я вижу, этого было достаточно:]. Я расширил свой ответ для дальнейшего использования. – vandalizmo