Formulario de contacto en Symfony
1- Creamos el módulo para el formulario:
$php symfony generate:module frontend contacto
2- Modificamos la accion index para que muestre el formulario:
// apps/frontend/modules/contacto/actions/action.class.php
class contactoActions extends sfActions
{
public function executeIndex()
{
$this->formulario = new ContactoForm();
}
}
3- Creamos la plantilla: Como lo hemos puesto que se muestre en la acción index, ahora la plantilla la copiaremos en el indexSuccess.php:
// apps/frontend/modules/contacto/templates/indexSuccess.php
<_form action="" method="POST">
<_/form>
4- Añadimos la ruta: Modificamos el archivo routing.yml para añadir lo siguiente:
# contacto
contacto:
url: /contacto/
options: { model: Contacto, type: object }
param: { module: contacto, action: index }
requeriments:
sf_method: [post]
contacto_gracias:
url: /gracias-por-contactar/
options: { model: Contacto, type: object }
param: { module: contacto, action: gracias }
5- Creamos la acción enviar y gracias: Creamos la acción “enviar” que será una acción intermedia entre el formulario y el agradecimiento. Esto evitará que el usuario pulse F5 y se reenvíe el formulario.
public function executeIndex(sfWebRequest $request)
{
$this->formulario = new ContactoForm();
if ($request->isMethod('post'))
{
$this->formulario->bind($request->getParameter('contacto')); // asociamos los datos que envió el usuario con el formulario
if ($this->formulario->isValid()) // validamos
{
// enviamos el mail con los valores validados y limpios
$mensaje="CONSULTA:
Nombre: ".$this->formulario->getValue('nombre')."
E-mail: ".$this->formulario->getValue('email')."
Teléfono: ".$this->formulario->getValue('telefono')."
Consulta: ".$this->formulario->getValue("consulta")."
";
$cabeceras='MIME-Version: 1.0'."\r\n";
$cabeceras.= 'Content-type: text/html; charset=iso-8859-1'."\r\n";
mail(sfConfig::get('app_mail_contacto'), 'Consulta', $mensaje, $cabeceras);
$this->redirect('contacto/gracias');
}
}
}
Acción “gracias” tan solo muestra la plantilla graciasSuccess.php con el agradecimiento por haber enviado el formulario, pero la acción, aunque sea vacía tiene que existir.
public function executeGracias()
{
// si la página anterior no es la del formulario de contacto: redirigimos al formulario
}
Plantilla graciasSuccess.php:
aquí ponemos lo que queramos
Etiquetas: formularios, symfony
0 Comentarios:
Publicar un comentario en la entrada
Enlaces a esta entrada:
Crear un enlace
<< Home