1

我找不到关于如何在子类表单中使用父表单元素的任何参考。可能是因为除了我之外的每个人都很明显。这让我很难过。这是我尝试过的。

起初,在我的表单构造函数中,我调用了

parent::__construct($options = null);

然后像这样访问父元素

$type = parent::setName($this->type);

问题是所有父表单元素都会显示是否显式调用。有人说,“不要用__construct(),改用init()函数。所以我把构造函数改成init(),把父构造函数注释掉,然后跑表单,就炸了说不能通过setName() 的空值。我注释掉了所有 seName() 调用并运行了表单,但只显示了在子类表单中实例化的元素。

我的问题是:如果我不使用父构造函数,我如何获取和使用父表单元素?

已解决:由于构造函数切换为init,所以对parent的调用也需要切换。对于有php背景的人来说很容易。对于一个没有的人来说不是那么多。

采用

parent::init();
4

2 回答 2

1

已解决:由于构造函数切换为init,所以对parent的调用也需要切换。对于有php背景的人来说很容易。对于一个没有的人来说不是那么多。

采用

父::init();

于 2010-03-05T16:37:09.283 回答
-1

您应该首先学习 OOP 原则。显然你对它没有任何了解。您需要在您编写的 Form_Class::init() 方法中调用 parent::init() ,但是为什么呢?因为否则父方法不会被调用并被 From_Class 方法覆盖。

另一件事是,当您有一个带有输入和提交的父类“SuperForm”时,您的“SuperForm_Subclass”将分配相同的元素。无需使用“parent::*”来访问元素(唯一的例外是您使用静态 SuperForm 变量来存储它们 - 这没有任何意义)。

您可以在 SuperForm_Subclass 中轻松使用 $this->inputElement 和 $this->submitElement ,就像在 SuperForm 类中一样。

在您的示例中,您可以很好地使用 __contruct(),但与调用父构造函数的条件相同。您也可以访问那里生成的元素...

于 2010-01-12T19:23:57.733 回答