我有我继承为每个用例基本用户的形式,即注册,编辑等如何使用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,您是对的 - 第二项任务不是必需的。当我回头看看当天早些时候的子表单时,他们也有可选的元素。 –