我有我繼承爲每個用例基本用戶的形式,即註冊,編輯等如何使用Zend_Form->的createElement()
一些表單元素共同所有的用例,併爲這些我使用表單作爲元素工廠,例如$ this-> addElement('text','first_name',array(...))。這工作正常。
對於僅在某些用例中需要的元素,我在基本窗體類中創建它們,但不添加它們,例如, $ this-> createElement('text','id',array(...))。當我到達子類本身時,那就是當我實際添加這些可選元素時。現在
,我認爲在子類中,我將能夠簡單地添加使用兩種元素:
$this->addElement($this->getElement('id'));
或者
$this->addElement($this->id);
但事實並非如此。我收到一個異常,說我想添加元素(NULL)。
我可以得到想要的結果的唯一方法是將create元素專門分配給成員變量,然後再使用該變量名稱。
例如在基本形式:
$this->id = $this->createElement('text', 'id', array(...));
然後在子類:
$this->addElement($this->id);
在我看來,這應該產生一個變量名衝突。如果createElement沒有命名我的元素'id',它是什麼命名的?
編輯
我使用init()在兩家母公司和子類,和孩子的init()的方法調用父的init()作爲其首要任務。
感謝Marcin,您是對的 - 第二項任務不是必需的。當我回頭看看當天早些時候的子表單時,他們也有可選的元素。 –