难以扩展Zend_Form

时间:2012-04-03 13:42:23

标签: zend-framework inheritance zend-form subclass

目前我在扩展Zend_Form方面遇到了很大困难。

我有一个名为 Forms_LpaManageEmailForm 的基本类。 它是单独使用,工作正常。 接下来我创建了一个新的类表单 名为 Default_Form_CartReport 的女巫扩展 Forms_LpaManageEmailForm 。 所以任务是渲染 Default_Form_CartReport 并轻轻地修改它。 换句话说,我需要所有的功能 Forms_LpaManageEmailForm 类但具有覆盖_addMultiOptionsForMultiSelect()功能 (做了什么)并更改了按钮标签(未解决)。

在基础课程中,我有一个名为 id 的隐藏元素,其中填充了值 $this->_entry_id['entry_id'].当我单独使用基本表格时 - 它的问题很好。但 当我运行扩展表单(Forms_LpaManageEmailForm)时,我看到隐藏的id元素的值为空。在构造部分的基础类中,我运行 Zend调试器(用这行Zend_Debug::dump($this->_entry_id['entry_id']))来查看是否 价值通过。并且它已通过:)当我在init()部分重复此操作时,它显示为NULL ...

我几乎不了解 - 问题出在init()函数中,就像调用它一样。 我认为Default_Form_CartReport类骨架有问题。

我已将代码上传到:PASTEBIN 在这个问题上真的需要帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

我相信您的问题导致Forms_LpaManageEmailForm:: __construct直接调用$this->init()这一事实。如果您打开Zend_Form,您会注意到__construct也在调用$this->init()功能。这会导致您的init()函数执行两次。

尝试加载所有逻辑和放大器元素仅在__construct函数中,不使用init()函数。此外,每个表单类中的__construct函数应始终在任何其他逻辑之前调用parent::__construct