J'essaie de créer un élément de formulaire personnalisé qui étend Zend_Form_Element_Text avec un validateur (donc je ne dois pas continuer à configurer le validateur lorsque j'utilise certains éléments). De toute façon, j'ai du mal à lui passer la variable $ maxChars lorsque je l'instancie dans mon formulaire principal. J'ai fourni mon code raccourci ci-dessousPassage de variables à un élément de formulaire Zend personnalisé
Ceci est mon élément personnalisé ci-dessous
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;
}
}
C'est là que j'instancier mon élément de formulaire personnalisé.
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));
}
}
Lorsque je tente de passer '100' en utilisant customElement- $> setProperties (100) dans ma forme, il ne marche pas se passer correctement à mon StringLength validateur. Je suppose que c'est parce que le validateur est appelé dans Init? Comment puis-je réparer cela?
Merci mon pote, je ne sais pas pourquoi je n'ai pas pensé à la première solution. La deuxième solution est quelque chose de nouveau pour moi, ils fonctionnent tous les deux bien. acclamations =) – user322003