V·o·L·V·o·R·e·T·a·S e·N M·i C·a·B·e·Z·a

Pues eso... las volvoretas de mi cabeza que también quieren voz y voto.
Opiniones, injusticias, pensamientos, informática, historias, cuentos...

viernes, abril 16, 2010

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: ,

0 Comentarios:

Publicar un comentario en la entrada

Enlaces a esta entrada:

Crear un enlace

<< Home