Foros del Web » Programando para Internet » PHP » Zend »

Usar Forms sin Zend_Form

Estas en el tema de Usar Forms sin Zend_Form en el foro de Zend en Foros del Web. Desde que vi Zend_Form me gustaron muchas de sus cosas, pero no me gustó una fundamental. Y es que prefiero mis formularios en las vistas ...
  #1 (permalink)  
Antiguo 06/03/2009, 12:29
 
Fecha de Ingreso: enero-2005
Mensajes: 149
Antigüedad: 16 años, 3 meses
Puntos: 2
Usar Forms sin Zend_Form

Desde que vi Zend_Form me gustaron muchas de sus cosas, pero no me gustó una fundamental. Y es que prefiero mis formularios en las vistas que tenerlos en los controladores o los modelos. Por que los considero parte de las vistas.

Desde ese punto de vista me parecería razonable usar Zend_Form por ejemplo en algún: "module/views/forms". Pues también pienso que las vistas no tienen por que ser solo xhtml y css, pueden ser clases y php que generan un output de vista.

Pero aún así, me sigue agradando más la idea de poner los formularios directamente en mis vistas xhtml.

Zend_Form acopla perfectamente unos componentes con otros... Pero si el form lo hacemos en la vista, entonces llegamos al típico punto de los tutoriales de Zend Framework "How to fit it all in MVC" como hacemos funcionar todo esto en mvc de zf claro. Y yo comenzé a hacerlo e hice este controlador para un registro de usuarios. El código no es 100% correcto, tomarlo como un "proof of concept":

En el codigo haríamos filter y validator chains que los contrastariamos con los valores de $_POST y si es valido, insertariamos los datos en la base de datos.
Si es invalido, mostrariamos los errores y repoblariamos el formulario.

Aún faltarian cuestiones con js de accesibilidad o cuestiones de usabilidad. Y la verdad ahora mismo no sé ni como proseguiría para implantar esas tecnologias en todo este proceso. Es algo todavía a estudiar para mi.

Pero mi pregunta quiero que sea muy clara... ¿ Me animariais a seguir por este camino ¿es factible pero más complejo o idealista?. O me aconsejariais emplear Zend_Form ?

Código PHP:
<?php
class Users_RegistrationController extends My_App2_Controller_Action
{
    public function 
indexAction()
    {
        if (
$this->_request->isPost()) {
            
$filters = array(
                
'username'   => '',
                
'password' => '',
                
'email' => ''
            
);
            
            
$validators = array(
                
'username'   => '',
                
'password' => '',
                
'email' => ''
            
);

            
$data $_POST;

            
$input = new Zend_Filter_Input($filters$validators);
            
$input->setData($data);
            
            
$values $this->_request->getPost();
            
            if (
$input->isValid()) {
                
$values = array(
                    
'username' => $values['username'],
                    
'password' => $values['password'],
                    
'email' => $values['email']
                );
                
                
// Esto no tiene por ke ser correcto he escrito lo primero que se me ha ocurrido.
                // No creo que esté siguiendo patrones, así por mi suerte... jeje.
                // Solo es un proof of concept de que aquí haríamos un insert de los datos.
                
$user = new UsersModel();
                
$user->_db->write($values);
                
            } else {
                
// Mostramos los mensajes de error
                
if ($input->hasInvalid() || $input->hasMissing()) {
                  
$this->view->messages $input->getMessages();
                }
                
                
// Repoblamos el formulario (repopulate)
                
$this->view->username $values['username'];
                
$this->view->password $values['password'];
                
$this->view->email $values['email'];
            }
        }
    }
}
?>
Y este es el formulario:

Código PHP:
<?php
if(isset($this->messages)) {
    echo 
'<div id="errorBox">' $this->messages '</div>';
}
?>

<form enctype="application/x-www-form-urlencoded" action="users/registration" method="post" accept-charset="utf-8">

    <label for="username">Usuario:</label>
    <input type="text" name="username" id="username" value="<?php echo $this->username?>">

    <label for="password">Contraseña:</label>
    <input type="password" name="password" id="password" value="<?php echo $this->password?>">
    
    <label for="email">Correo electrónico:</label>
    <input type="text" name="email" id="email" value="<?php echo $this->email?>">

    <input type="submit" name="submit" id="submit" value="Enviar">

</form>
Un saludo y Muchas gracias

Última edición por yoguuu; 06/03/2009 a las 12:30 Razón: Razones morfológicas jejejeje
  #2 (permalink)  
Antiguo 06/03/2009, 12:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 14 años, 10 meses
Puntos: 2135
Respuesta: Usar Forms sin Zend_Form

Pues básicamente estas re-haciendo lo que hace Zend_Form, solo que por separado en lugar de dejar que sea solo Zend_Form el que lo haga...
  #3 (permalink)  
Antiguo 06/03/2009, 12:55
 
Fecha de Ingreso: enero-2005
Mensajes: 149
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Usar Forms sin Zend_Form

¿ Y no crees que presente ninguna ventaja ?
¿ Como por ejemplo que un diseñador pudiese maquetar un formulario ?

Jaja... me acabo de plantear las ventajas y solo encuentro esa y que serías más conocedor del código puro, de cada linea, de tus formularios y su lógica. Un absurdo, pero yo soy un completo aprendiz en esto, no me fio de mi mismo y por eso pregunto supongo. Busco segundas opiniones.

Quizá me haya dejado llevar por esto típico de que los formularios, son vistas y que por tanto tenían que estar en en ellas directamente... Para así por ejemplo poder validar la vista completa... Pero quizá olvidé que el código a validar debiera ser el del output del server, no el del archivo local.

Creo que me respondí yo mismo diciendo que las vistas también podían tener código, ser clases y generar output. Me parece que si cambiaré mi planteamiento.

Última edición por yoguuu; 06/03/2009 a las 13:28
  #4 (permalink)  
Antiguo 06/03/2009, 15:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 14 años, 10 meses
Puntos: 2135
Respuesta: Usar Forms sin Zend_Form

Pues claro un diseñador las puede maquetar tal y como quiera para eso se renderean con un partial view, Zend_Form es muy flexible.

El que conozcas o no creo se reduce a que tan bien conoces la herramienta y la puedes explotar, mas que re-inventes la rueda para tratar de "ajustar" a algo que no conoces tan bien.

Te recomendaria que vieras el codigo fuente del Zend_Form para que veas como trabaje y trates de estudiarlo veras que es demasiado flexible y lo puedes adaptar perfectamente a tus necesidades.

Saludos
  #5 (permalink)  
Antiguo 07/03/2009, 06:46
 
Fecha de Ingreso: enero-2005
Mensajes: 149
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Usar Forms sin Zend_Form

Cita:
Pues claro un diseñador las puede maquetar tal y como quiera para eso se renderean con un partial view, Zend_Form es muy flexible.
¿ Como dices ? ¿ Que puedo usar Zend_Form teniendo mis formularios directamente escritos en xhtml en una vista ?

Cita:
El que conozcas o no creo se reduce a que tan bien conoces la herramienta y la puedes explotar, mas que re-inventes la rueda para tratar de "ajustar" a algo que no conoces tan bien.

Te recomendaria que vieras el codigo fuente del Zend_Form para que veas como trabaje y trates de estudiarlo veras que es demasiado flexible y lo puedes adaptar perfectamente a tus necesidades.
Si, debo hacerlo... Pero creo que simplemente /Zend/form.php Me sobrepasa a día de hoy jeje 3049 lineas nada menos... eso por no hablar de la orquesta de archivos que tiene en /Zend/Form/* Me parece absolutamente fascinante pero, hay que digerirlo...

Por ahora voy a establecer bases de código con Zend_Form con las que poder trabajar y probar, experimentar... Tengo una cantidad ingente de tutoriales :S Que iré desgranando. ;)

Un saludo ; )

Última edición por yoguuu; 07/03/2009 a las 06:55
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:53.