我找不到有关如何在子类表单中使用父表单元素的任何参考。可能是因为除了我以外,每个人都很明显。这让我很难过。这就是我的尝试。
首先,在我的表单构造函数中,我调用了
parent::__construct($options = null);
然后访问像这样的父元素
$type = parent::setName($this->type);
问题是所有父表单元素都会显示是否显式调用。有人说,“不要使用__construct(),而是使用init()函数。所以我将构造函数更改为init(),注释掉父构造函数,然后运行表单。它轰炸说它无法通过setName()的空值。我注释掉了所有seName()调用和表单,但只显示了以子类形式实例化的元素。
我的问题是:如果我不使用父构造函数,我如何获取并使用父元素的表单元素?
解决:由于构造函数已切换到init,因此还需要切换对父级的调用。容易有php背景的人。对于没有这样做的人来说,并非如此。
使用
parent::init();
答案 0 :(得分:1)
解决:由于构造函数已切换到init,因此还需要切换对父级的调用。容易有php背景的人。对于没有这样做的人来说,并非如此。
使用
父::的init();
答案 1 :(得分:-1)
您应该首先学习OOP原则。显然你对它一无所知。您需要在编写Form_Class :: init()方法时调用parent :: init(),但为什么?因为否则不调用父方法,并由From_Class方法覆盖。
其他的事情是当你有一个带有输入和提交的父类“SuperForm”时,你的“SuperForm_Subclass”会分配相同的元素。没有必要使用“parent :: *”来访问元素(如果您使用静态SuperForm变量来存储它们,则只会出现异常 - 这没有任何意义)。
您可以在SuperForm_Subclass中轻松使用$ this-> inputElement和$ this-> submitElement,就像在SuperForm类中一样。
在您的示例中,您可以使用__contruct(),但调用父构造函数的条件相同。您也可以访问那里生成的元素......