私は複数のフォームを持つページを持っています。いくつかのフォームは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
これは私がやろうとしていたことを達成する最も正しい方法のようです。ありがとうございました。 – David
そのような短い答えの前に申し訳ありませんが、以前はあまり時間がありませんでしたが、私はそれが十分であることがわかりました:]。私は将来の参照のために私の答えを拡大した。 – vandalizmo