23/05/2011, 22:50
|
| | Fecha de Ingreso: octubre-2010 Ubicación: Uruguay, Canelones
Mensajes: 66
Antigüedad: 14 años, 1 mes Puntos: 6 | |
Zend Form problema con muestreo de errores Tengo este form
Código:
<?php
class Form_Login extends Zend_Form
{
public $elementDecorators = array(
'ViewHelper',
array('ViewScript', array('viewScript' => 'scripts/decorator/form.phtml', 'placement' => false),
));
public $buttonDecorators = array(
'ViewHelper',
array(array('data' => 'HtmlTag'), array('tag' => 'td', 'class' => 'element', 'colspan' => 2)),
array(array('label' => 'HtmlTag'), array('tag' => 'td', 'placement' => 'append')),
array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
);
public function login( )
{
$translate = Zend_Registry::get('Zend_Translate');
$User_Library_Varias = Zend_Registry::get('User_Library_Varias');
$this ->setAttrib('enctype', 'multipart/form-data')
->setAttrib('id','FormsLogin')
->setAction(Zend_Registry::get('baseUrl'));
$element = array();
$usuario_element = new Zend_Form_Element_Text('FormsLogin_usuario'); //Generamos un elemento tipo text
//Le asignamos todas las caracteristicas del campo
$usuario_element ->setRequired(true) //Lo hacemos requerido
->addValidator('EmailAddress', false) //Validamos que sea mail
->setDecorators($this->elementDecorators) //Este decorator esta asignado arriba
->addErrorMessages(array(
$User_Library_Varias->__CharToChange($translate->translate('No puede estar vacío este campo')),
$User_Library_Varias->__CharToChange($translate->translate('Incorrecto. El usuario debe ser su correo electrónico'))
)) //Enviamos los mensajes de error
->setLabel($User_Library_Varias->__CharToChange($translate->translate('FormLogin_usuario'))) //Label del campo
//Le agregamos atributos al campo
->setAttrib('class', 'text ui-widget-content ui-corner-all') //Asignamos etiquetas al campo
->setAttrib('title', $User_Library_Varias->__CharToChange($translate->translate('FormLogin_usuario_Title')));
$element[] = $usuario_element;
$contrasenia_element = new Zend_Form_Element_Password('FormsLogin_contrasenia'); //Generamos un elemento tipo text
//Le asignamos todas las caracteristicas del campo
$contrasenia_element ->setRequired(true) //Lo hacemos requerido
->addValidator('stringLength', false, array(6, 80)) //Validamos la longitud del texto
->setDecorators($this->elementDecorators) //Este decorator esta asignado arriba
->addErrorMessages(array(
$User_Library_Varias->__CharToChange($translate->translate('No puede estar vacío este campo')),
)) //Enviamos los mensajes de error
->setLabel($User_Library_Varias->__CharToChange($translate->translate('FormsLogin_contrasenia'))) //Label del campo
//Le agregamos atributos al campo
->setAttrib('class', 'text ui-widget-content ui-corner-all') //Asignamos etiquetas al campo
->setAttrib('title', $User_Library_Varias->__CharToChange($translate->translate('FormLogin_contrasenia_Title')));
$element[] = $contrasenia_element;
$aceptar_element = new Zend_Form_Element_Submit('FormsLogin_aceptar');
$aceptar_element ->setValue('FormsLogin_aceptar')
->setAttrib('style', 'margin-right: 3px;')
->setAttrib('title', $User_Library_Varias->__CharToChange($translate->translate('FormLogin_aceptar_Title')))
->setDecorators($this->buttonDecorators);
$element[] = $aceptar_element;
return $this->setElements($element);
}
public function loadDefaultDecorators()
{
$this->setDecorators(array(
'FormElements',
array('HtmlTag', array('tag' => 'table')),
'Form',
));
}
}
Mi gran tema pasa cuando quiero mostrar el error, no me surge nunca ya no se que hacer y me estoy llendo por las ramas!!!. Necesito de su ayuda.
Busque en diferentes lugares aqui y en ninguno encontre la solución.
Por las dudas, el decorador que en un viewScript:
Código:
<!-- Esta primera parte reemplazaria HtmlTag -->
<tr class="formElementContent">
<!-- parte que remplaza el decorador Label -->
<td>
<?php
$attribs = $this->element->getAttribs();
$label = $this->element->getLabel();
//nuevo, verificamos si el elemento es requerido,
//entonces agregamos un elemento en html al final de la etiqueta
if ($this->element->isRequired()) {
$attribs['escape'] = false;
$label = $this->escape($label);
}
echo $this->formLabel($this->element->getName(), $label);
?>
</td>
<td>
<!-- parte del elemento -->
<?php echo $this->content ?>
<!--
parte que reemplaza Errors
observen que estoy poniendo los errores
con simples saltos de linea en lugar de lista
-->
</td>
</tr>
//Esta área no funciona
<?php if ($this->element->getErrors()): ?> //Esto está mal no encuentro como arreglarlo
<tr>
<!-- esta parte es opcional si agregaron una descripción -->
<td class="hint"><?php echo $this->element->getErrors() ?></td>
</tr>
<?php endif ?>
<?php if ($this->element->get): ?>
<tr>
<!-- esta parte es opcional si agregaron una descripción -->
<td class="hint"><?php echo $this->element->getDescription() ?></td>
</tr>
<?php endif ?>
<tr id="tr_<?php echo $attribs['id'] ?>">
<td colspan="2">
</td>
</tr>
Desde ya muchas gracias!!!! |