Zend framework Zend框架:扩展Zend_表单以添加默认表单元素?
目前,我创建了自己的Zend_表单类,只是为了添加一些帮助函数和setdefault装饰器Zend framework Zend框架:扩展Zend_表单以添加默认表单元素?,zend-framework,Zend Framework,目前,我创建了自己的Zend_表单类,只是为了添加一些帮助函数和setdefault装饰器 现在我想做的是添加一些默认值(setMethod('post')),并添加一些元素(如果你知道防止垃圾邮件机器人的蜜罐方法的话)。我该怎么做?在\uuu构造()?中,如果您阅读Zend\u表单的\uu构造,您将看到它正在调用空方法init() 所以你有两个选择: 创建自己的构造,不要忘记调用父构造 (推荐)在init()方法中放入所需内容。这样,您将确保所有内容都已正确实例化 init()与整个框架(您想
现在我想做的是添加一些默认值(
setMethod('post')
),并添加一些元素(如果你知道防止垃圾邮件机器人的蜜罐方法的话)。我该怎么做?在\uuu构造()
?中,如果您阅读Zend\u表单的\uu构造
,您将看到它正在调用空方法init()
所以你有两个选择:
创建自己的构造,不要忘记调用父构造
(推荐)在init()
方法中放入所需内容。这样,您将确保所有内容都已正确实例化
init()
与整个框架(您想要扩展哪个类)是一致的
如果您阅读Zend\u表单的\u构造
,您将看到它正在调用空方法init()
所以你有两个选择:
创建自己的构造,不要忘记调用父构造
(推荐)在init()
方法中放入所需内容。这样,您将确保所有内容都已正确实例化
init()
与整个框架(您想要扩展哪个类)是一致的
覆盖构造函数应该可以
class Your_Form extends Zend_Form
{
public function __construct($options = null)
{
$this->setMethod('POST');
$this->addElement('hidden', 'hash', array('ignore' => true));
parent::__construct($options);
}
因此,其他表单可以扩展表单
并调用init()
,从而保持一致
class Model_Form_Login extends Your_Form
{
public function init()
{
$this->addElement('input', 'username');
...
如果覆盖init()-方法,则不必调用父对象::\uu construct()
。。。但是所有扩展表单都必须像这样调用parent::init()
覆盖构造函数应该可以
class Your_Form extends Zend_Form
{
public function __construct($options = null)
{
$this->setMethod('POST');
$this->addElement('hidden', 'hash', array('ignore' => true));
parent::__construct($options);
}
因此,其他表单可以扩展表单
并调用init()
,从而保持一致
class Model_Form_Login extends Your_Form
{
public function init()
{
$this->addElement('input', 'username');
...
如果覆盖init()-方法,则不必调用父对象::\uu construct()
。。。但是所有扩展表单都必须像这样调用parent::init()
我之所以考虑使用该构造,是因为我想创建一个“抽象”zend form类(可重用性),所有其他表单都将在其中扩展。我想让它与\uu construct()
一起工作,我在开始时调用了parent::construct()
来创建抽象,它将继承Zend\u表单,而您将继承抽象。唯一的原因是,每次升级系统时,如果您这样做,您都必须接触库。(或者我不明白你做了什么)。我之所以想到使用这个构造,是因为我想创建一个“抽象”zend form类(可重用性),我的所有其他表单都将在其中扩展。我想让它与\uu construct()
一起工作,我在开始时调用了parent::construct()
来创建抽象,它将继承Zend\u表单,而您将继承抽象。唯一的原因是,每次升级系统时,如果您这样做,您都必须接触库。(或者我不明白你做了什么)。
class Model_Form_Login extends Your_Form
{
public function init()
{
$this->addElement('input', 'username');
...
parent::init();