Я пытаюсь создать пользовательский элемент формы, который расширяет Zend_Form_Element_Text с помощью валидатора (поэтому мне не нужно продолжать настраивать валидатор, когда я использую определенные элементы). Во всяком случае, мне трудно передать переменную $ maxChars, когда я создаю экземпляр в моей основной форме. Я предоставил мой сокращенный код нижеПередача переменных в пользовательский элемент формы Zend
Это мой пользовательский элемент ниже
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));
}
}
Когда я пытаюсь передать '100', используя $ customElement-> setProperties (100) в моей форме, он не получает должным образом передается моей StringLength валидатора. Я предполагаю, что это потому, что валидатор вызван в Init? Как я могу это исправить?
Спасибо, я не знаю, почему я не думал о первом решении. Второе решение - это что-то новое для меня, но они оба работают хорошо. приветствия =) – user322003