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

Formularios Zend

Estas en el tema de Formularios Zend en el foro de Zend en Foros del Web. Buenos dias a todos. Tengo un problemon se ve que el programador freelance de un amigo que le hacia una web le ha dejado tirado ...
  #1 (permalink)  
Antiguo 27/11/2012, 06:13
 
Fecha de Ingreso: marzo-2009
Mensajes: 37
Antigüedad: 15 años, 7 meses
Puntos: 1
Formularios Zend

Buenos dias a todos.

Tengo un problemon se ve que el programador freelance de un amigo que le hacia una web le ha dejado tirado con el proyecto casi terminado y esta hecho con zend.

Esta todo casi hecho solo falta capturar informacion del formulario y de un carrito que tienen y poder tratarlo para poder hacer la venta y enviar un correo pero no tengo ni idea de zend.

el formulario esta hecho asi

<form action="<?php echo $server . '/beta/pedido/formulario'; ?>" name="shopping_cart" method="post">
<div class="two_columns">
<div class="left_column">
<div class="left_titles">
<label for="nom">Nombre</label>
<label for="direccion">Dirección</label>
<label for="localidad">Localidad</label>
<label for="telefono">Teléfono</label>
</div>
<div class="left_values">
<?php echo $this->form->nom; ?><br />
<?php echo $this->form->direccion; ?><br />
<?php echo $this->form->localidad; ?><br />
<?php echo $this->form->telefono; ?>
</div>
<h2 class="little">Lugar de entrega</h2>
<b>El envío es gratuito para compras de un importe mínimo a 100€ para peninsula y baleares. En caso contrario el envío será a portes debidos.</b><br><br>
<?php echo $this->form->domicilio; ?>
<br /><br />
<div class="left_titles">
<label for="nom_otro">Nombre</label>
<label for="direccion_otro">Dirección</label>
<label for="localidad_otro">Localidad</label>
<label for="telefono_otro">Teléfono</label>
</div>
<div class="left_values">
<?php echo $this->form->nom_otro; ?><br />
<?php echo $this->form->direccion_otro; ?><br />
<?php echo $this->form->localidad_otro; ?><br />
<?php echo $this->form->telefono_otro; ?>
</div>
</div>
<div class="right_column">
<div class="left_titles">
<label for="nif">N.I.F. / C.I.F.</label>
<label for="cp">Código postal</label>
<label for="provincia">Provincia</label>
<label for="email">E-mail</label>
<label for="pais">Pais</label>
</div>
<div class="left_values">
<?php echo $this->form->nif; ?><br />
<?php echo $this->form->cp; ?><br />
<?php echo $this->form->provincia; ?><br />
<?php echo $this->form->email; ?><br />
<?php echo $this->form->pais; ?>
</div>
<h2 class="little">Entrega del pedido</h2>
<?php echo $this->form->entrega; ?>
<br /><br />
Semana de <?php echo $this->form->entrega_desde; ?> al <?php echo $this->form->entrega_hasta; ?> de <?php echo $this->form->entrega_mes; ?>
<h2 class="little">Modalidad de pago</h2>
<?php echo $this->form->pago; ?>
<br /><br />
</div>
</div>
<div id="buttons_formulario" style="clear: both;">
<?php
if ( !$this->cart_empty )
{
?>
<a href="javascript:document.forms[0].submit();" class="close"><img src="/images/buttons/buy.jpg" alt="Comprar" border="0" class="action-button" /></a>
<?php
}
else
{
?>
No hay productos en la cesta.
<?php
}
?>
<a href="/beta/productos" class="close"><img alt="Volver" class="action-button" src="/images/buttons/back.jpg" /></a></div>
</form>

no se como pasar la informacion de este formulario a una página php .

Por Favor necesito ayuda.

Muchas Gracias.
  #2 (permalink)  
Antiguo 27/11/2012, 10:01
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Formularios Zend

Pasaste por la documentación ?, te dejo un par de referencias:

http://framework.zend.com/manual/1.1...http.dataacess
http://framework.zend.com/manual/1.1...uttingtogether

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 27/11/2012, 11:27
 
Fecha de Ingreso: marzo-2009
Mensajes: 37
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Formularios Zend

Ok. Muchas Gracias por responder ahora mismo me la miro.
  #4 (permalink)  
Antiguo 29/11/2012, 03:20
 
Fecha de Ingreso: marzo-2009
Mensajes: 37
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Formularios Zend

Hola buenos dias a todos,

Ya he solucionado el problema de pasar datos de un formulario a otra página.
Ahora estoy haciendo lo de validar campos pero no me salgo de este error.

Fatal error: Class 'Application_Form_Formulario' not found in C:\AppServ\data\application\controllers\IndexContr oller.php on line 15

Hos comento como lo hago.

En el formulario he añadido esto en los campos que quiero validar.

$nom->addValidator('alpha');
$nom->setErrorMessages(array('messages' => 'El campo nombre solo puede contener letras'));

Y despues en el archivo indexcontroller.php he añadido estó:

$formulario = new Application_Form_Formulario();
$this->view->form = $formulario;
if ($this->_request->isPost())
{
$formData = $this->_request->getPost();
if ($formulario->isValid($formData))
{
}
else
{
}
}

Esto lo pengo dentro de la public function indexAction
Alguien me podria ayuda con esto, se lo agradeceria MUCHO ya que estoy perdido y no se por donde tirar.

Muchas Gracias.
PD: Si no se entiende por favor decirmelo y lo intentare explicar de otra forma.
  #5 (permalink)  
Antiguo 29/11/2012, 09:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Formularios Zend

Pues el error es claro, no encuentra la clase del formulario, ¿ya haz verificado eso?

El form tiene que estar en:

application/forms/Formulario.php

La clase se tiene que llamar:

Application_Form_Formulario

Saludos.
  #6 (permalink)  
Antiguo 29/11/2012, 14:31
 
Fecha de Ingreso: marzo-2009
Mensajes: 37
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Formularios Zend

Muchas Gracias GatorV por la ayuda este problema ya lo he resuelto pero no consigo que funcione
Me podrias hechar una mano para guiarme un poco para poder validar aunque solo sea un campo?, No se lo que hago mal si quieres te paso el codigo que utilizo para hacer el formulario.
Utilizo esta pagina para lo campos se llama Shopping.php

<?php
class Default_Form_Shopping extends Zend_Form
{
public function init()
{
$element_properties = array(
'ViewHelper'
);

// Nom:
$nom = new Zend_Form_Element_Text('nom');
$nom->setRequired(true)->addValidator('NotEmpty', true);
$nom->setLabel( 'Nombre' );
$nom->setDecorators( $element_properties );
// direccion:
$direccion = new Zend_Form_Element_Text('direccion');
$direccion->setLabel( "Dirección" );
$direccion->setRequired(true)->addValidator('NotEmpty', true);
$direccion->setDecorators( $element_properties );
$this->addElements(
array(
$nom,
$direccion,
)
);
}
}
  #7 (permalink)  
Antiguo 29/11/2012, 14:37
 
Fecha de Ingreso: marzo-2009
Mensajes: 37
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Formularios Zend

Aqui te paso el formulario se llama : formulario.phtml

<div id="fcart">
<img src="/images/titles/titulo_cart.gif" class="image_cabecera" alt="Imagen cabecera de pedido" />
<h2>Datos personales</h2>
<?php if ( is_array( $this->errores ) && isset( $this->errores[0] ) ) { ?>
<div id="errores">
<ul>
<?php
$err_num = 0;
$show_errors = true;
foreach ( $this->errores as $error )
{
if ( $err_num < 2 )
{
echo "<li>{$error[0]}: {$error[1]}</li>";
}else{
if ( $show_errors )
{
echo "<li>Más errores ...</li>";
$show_errors = false;
}
}
$err_num++;
}
?>
</ul>
</div>
<?php }

$server = 'http://' . $_SERVER['HTTP_HOST'];
?>
<form action="<?php echo $server . '/beta/pedido/resumen'; ?>" name="shopping_cart" method="post">
<div class="two_columns">
<div class="left_column">
<div class="left_titles">
<label for="nom">Nombre</label>
<label for="direccion">Dirección</label>
</div>
</div>
</div>

<a href="javascript:document.forms[0].submit();" class="close"><img src="/images/buttons/buy.jpg" alt="Comprar" border="0" class="action-button" /></a>
  #8 (permalink)  
Antiguo 29/11/2012, 14:40
 
Fecha de Ingreso: marzo-2009
Mensajes: 37
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Formularios Zend

Y el archivo indexcontroller.php es así:
<?php

class IndexController extends Zend_Controller_Action
{

public function init()
{
$this->view->pageTitle = 'La Jamonera - Página Principal';
$this->view->show_image = true;
}

public function indexAction()
{

$formulario = new Default_Form_Shopping();
$this->view->form = $formulario;

if ($this->_request->isPost())
{
$formData = $this->_request->getPost();
if ($formulario->isValid($formData))
{
echo 'success';
exit;
}else{
$form->populate($formData);
}
}
$this->view->show_image = true;
}


}


Si me puedes hechar una mano te lo agradeceria MUCHO ya que estoy perdido no se por donde tirar he leido de todo pero no hay forma no se que hago mal.

Muchas Gracias por todo.
PD. Si necesita algo mas dimelo o si necesita te puedo enviar los archivos no hay problema.
  #9 (permalink)  
Antiguo 29/11/2012, 15:06
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Formularios Zend

Estas seguro que estas haciendo el POST al lugar correcto ?, porque el formulario apunta a beta/pedido/resumen y tu estas mostrando un IndexController::indexAction

Y esto

Código PHP:
Ver original
  1. $server = 'http://' . $_SERVER['HTTP_HOST'];

no es necesario hacer algo asi, Zend tiene un view helper para esto, serverUrl,

Código HTML:
Ver original
  1. <form url="<?php echo $this->serverUrl('/beta/pedido/resumen'); ?>">
__________________
http://es.phptherightway.com/
thats us riders :)
  #10 (permalink)  
Antiguo 29/11/2012, 15:26
 
Fecha de Ingreso: marzo-2009
Mensajes: 37
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Formularios Zend

Muchas Gracias por contestar masterpuppet.

/beta/pedido/resumen es la pantalla donde muestro los datos una vez que se hayan validado.

IndexController::indexAction Realmente no se para que sirve pero en la documentacion que he leido sale así. Me lo podrias explicar un poco ?

Muchas Gracias.
  #11 (permalink)  
Antiguo 29/11/2012, 16:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Formularios Zend

Es precisamente a donde lo estas apuntando, indexController::indexAction es la acción /index/index tienes que "apuntar" el POST de tu formulario a la acción donde quieras que vaya el formulario.

Saludos.
  #12 (permalink)  
Antiguo 29/11/2012, 16:17
 
Fecha de Ingreso: marzo-2009
Mensajes: 37
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Formularios Zend

No se se me equivoco pero entonces el formulario tiene que apuntar al indexController y dentro del indexcontroller si la validacion es correcta enviarlo a /beta/pedido/resumen que es donde se muestra los datos no?

Muchas gracias por la ayuda que me están ofreciendo.
  #13 (permalink)  
Antiguo 30/11/2012, 02:55
 
Fecha de Ingreso: marzo-2009
Mensajes: 37
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: Formularios Zend

Buenos dias a todos vuelvo esta mañana al ataque.
No habria la posibilidad de hacerlo mas sencillo para poder salir del paso y poder presentarlo y mas adelante hacer bien con zend?.
Es decir validar los campos con javascript.

Gracias a todos por las respuestas.
  #14 (permalink)  
Antiguo 30/11/2012, 09:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Formularios Zend

Claro que es posible, pregunta en el foro de Javascript como hacerlo, recuerda que Zend (y PHP) se ejecutan en el servidor, por lo que el HTML generado ya es algo independiente, y puedes usar Javascript perfectamente para validar en el cliente antes de procesarlo en el servidor.

Saludos.

Etiquetas: Ninguno
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 09:50.