Para isso, nós utilizaremos os decorators da classe Zend_Form.
Nosso resultado final será como a figura abaixo:
Para o nosso exemplo, a seguinte classe esta montada:
class MeuForm extends Zend_Form
{
public function __construct($options = null)
{
parent::__construct($options);
$this->setMethod(’post’);
$username=new Zend_Form_Element_Text(’login’, array(
‘required’ => true,
‘label’ => ‘Login:’,
‘filters’ => array(’StringTrim’, ‘StringToLower’),
‘validators’ => array(
‘Alnum’,
array(’Regex’,false,array(’/^[a-z][a-z0-9]{2,}$/’))
)
));
$username->removeDecorator(’Errors’);
$password=new Zend_Form_Element_Password(senha’, array(
‘required’ => true,
‘label’ => ‘Senha:’,
‘filters’ => array(’StringTrim’),
‘validators’ => array(
‘NotEmpty’,
array(’StringLength’, false, array(6))
)
));
$password->removeDecorator(’Errors’);
$save=new Zend_Form_Element_Submit(’save’, array(
‘label’ => ’Salvar’,
‘required’=> false,
‘ignore’ => true,
));
$this->addElements(array($username, $password, $save));
$this->setDecorators(array(
‘FormElements’,
‘FormErrors’,
‘Form’
));
}
}
As linhas principais da nossa mudança são as seguintes:
$username->removeDecorator(’Errors’);
$password->removeDecorator(’Errors’);
Se você não utilizar o parametro removeDecorator, com certeza os erros apareceram em baixo de cada elemento de seu formulário.
Para os erros aparecerem agrupados, o seguinte decorator foi criado:
$this->setDecorators(array(
‘FormElements’,
‘FormErrors’,
‘Form’
));
quer incrementar mais ainda?
Então no lugar de criar o decorator acima, crie o seguinte decorator:
$this->setDecorators(array(
‘FormElements’,
new Zend_Form_Decorator_FormErrors(array(
‘ignoreSubForms’=>true,
‘markupElementLabelStart’=> ‘<b>’,
‘markupElementLabelEnd’=> ‘</b>’,
‘markupListStart’=>’<div>’
‘markupListEnd’ => ‘</div>’,
‘markupListItemStart’=>’<span>’,
‘markupListItemEnd’=>’</span>’,
)),
‘Form’
));
O código acima irá colocar os "Índices" dos erros em um div e em negrito e os erros dos validators (StringLength, Alnum, NotEmpty) em uma tag span.
Tenho estudado sobre como utilizar o Dojo ToolKit no ZF. Os formulários ficam show de bola!
Espero postar sobre o Dojo ToolKit no ZF ;)
Abraços Pessoal.
Nenhum comentário:
Postar um comentário