Tenés razón, dejo el método completo:
Código PHP:
public function indexAction()
{
$usuario = new Zend_Session_Namespace('usuario');
$view = $this->view;
$form = new Zend_Form;
$form
->setAction($view->baseUrl.'/usuario/index')
->setMethod('post');
$form->addElement('text', 'email', array(
'Label' => 'E-Mail',
'Description' => 'El cambio de E-Mail no se completará hasta que se usted confirme la validación del mismo, ésta le llegará automáticamente al nuevo E-Mail.',
'Validators' => array(
'EmailAddress'
),
'Required' => false,
'Filters' => array(
'StringToLower'
)
));
$callback = create_function('$arg', 'return ltrim($arg, "0");');
$filter = new Zend_Filter_Callback($callback);
$form->addElement('text', 'phone', array(
'Label' => 'Teléfono',
'Description' => 'El teléfono debe contener código de área sin anteponer 0, ni 15 para celulares.',
'Validators' => array(
'Digits',
array('StringLength', false, array(10, 12))
),
'Required' => false,
'Filters' => array(
$filter
)
));
$form->clearDecorators()
->setElementFilters(array('StringTrim'))
->addDecorator('FormElements')
->addDecorator('Form')
->setElementDecorators(
array(
array('Description', array('tag' => 'p')),
array('Errors'),
array(array('HtmlTag_2' => 'HtmlTag'), array('tag' => 'div', 'class' => 'qtip-html hidden')),
array('Label'),
array(array('HtmlTag_3' => 'HtmlTag'), array('tag' => 'div', 'style' => 'width:50%; float:left; text-align:right; margin-right:5px')),
array('ViewHelper'),
array('HtmlTag', array('tag' => 'div', 'class' => 'qtip', 'style' => 'width:50%; float:left;'))
),
array(
'submit'
),
false
);
if (isset($_POST['submit'])) {
if ($form->isValid($_POST)) {
$values = $form->getValues();
$usuario->unlock();
// E-Mail
if (!empty($values['email'])) {
$update['email'] = $values['email'];
$usuario->email = $values['email'];
}
if (!empty($values['phone'])) {
$update['telefono'] = $values['phone'];
$usuario->telefono = $values['phone'];
}
// Almacenar datos
if (count($update)) {
$this->db->update('usuariosprimarios', $update, "id = $usuario->usuarioprimario_id");
$bool = true;
}
if ($bool) {
$form->reset();
$view->infoMessenger[] = 'Éxito al guardar.';
}
$usuario->lock();
} else $view->alertMessenger[] = 'Fallo al guardar, verifique los datos ingresados.';
}
$view->usuario = $usuario;
$view->form = $form;
}