我正在尝试创建一个自定义表单元素,该元素使用验证器扩展 Zend_Form_Element_Text(因此当我使用某些元素时,我不必继续设置验证器)。无论如何,当我以 Main 形式实例化它时,我无法将 $maxChars 变量传递给它。我在下面提供了我的缩短代码
这是我下面的自定义元素
class My_Form_Custom_Element extends Zend_Form_Element_Text
{
public $maxChars
public function init()
{
$this->addValidator('StringLength', true, array(0, $this->maxChars))
}
public function setProperties($maxChars)
{
$this->maxChars= $maxChars;
}
}
这是我实例化我的自定义表单元素的地方。
class My_Form_Abc extends Zend_Form
{
public function __construct($options = null)
{
parent::__construct($options);
$this->setName('abc');
$customElement = new My_Form_Custom_Element('myCustomElement');
$customElement->setProperties(100); //**<----This is where i set the $maxChars**
$submit = new Zend_Form_Element_Submit('submit');
$submit -> setAttrib('id', 'submitbutton');
$this->addElements(array($customElement ,$submit));
}
}
当我尝试在表单中使用 $customElement->setProperties(100) 传递“100”时,它没有正确传递给我的 StringLength 验证器。我认为这是因为在 Init 中调用了验证器?我怎样才能解决这个问题?