Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Formulario de Contacto Laravel

Estas en el tema de Formulario de Contacto Laravel en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Estoy intentando implementar un formulario de contacto en Laravel 5.6, tengo el siguiente formulario dentro de la carpeta pages: <div class="row"> <div class="col-md-12"> <h1>Contact Me</h1> ...
  #1 (permalink)  
Antiguo 25/09/2018, 05:22
 
Fecha de Ingreso: abril-2010
Mensajes: 52
Antigüedad: 8 años, 7 meses
Puntos: 0
Formulario de Contacto Laravel

Estoy intentando implementar un formulario de contacto en Laravel 5.6, tengo el siguiente formulario dentro de la carpeta pages:

<div class="row">
<div class="col-md-12">
<h1>Contact Me</h1>
<hr>
<form method="POST">
{{ csrf_field() }}
<div class="form-group">
<label name="email">Email:</label>
<input id="email" name="email" class="form-control">
</div>

<div class="form-group">
<label name="subject">Subject:</label>
<input id="subject" name="subject" class="form-control">
</div>

<div class="form-group">
<label name="message">Message:</label>
<textarea id="message" name="message" class="form-control">Type your message here...</textarea>
</div>

<input type="submit" value="Send Message" class="btn btn-success">
</form>
</div>
</div>


Controlador:


<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Post;
use Mail;

class PagesController extends Controller {


public function getContact() {
return view('pages.contact');
}

public function postContact(Request $request) {
$this->validate($request, [
'email' => 'required|email',
'subject' => 'min:3',
'message' => 'min:10']);

$data = array(
'email' => $request->email,
'subject' => $request->subject,
'bodyMessage' => $request->message
);

Mail::send('emails.contact', $data, function($message) use ($data){
$message->from($data['email']);
$message->to('[email protected]');
$message->subject($data['subject']);
});
Session::flash('success', 'Your Email was Sent!');
return redirect('/');
}

}


Ruta:

Route::get('/contact', '[email protected]');
Route::post('/contact', '[email protected]');


Vista dentro de la carpeta emails:

<h3>You Have a New Contact Via the Contact Form</h3>
<div>
{{ $bodyMessage }}
</div>
<p>Sent via {{ $email }}</p>


Los archivos de configuración .env y config/email los tengo bien configurados, pero

No funciona, queda en la pagina de contacto sin direccionar,enviar mail, ni nada.
Agradezco quien me eche una mano.
  #2 (permalink)  
Antiguo 25/09/2018, 06:56
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.975
Antigüedad: 5 años, 4 meses
Puntos: 373
Respuesta: Formulario de Contacto Laravel

El problema es que no estas indicando en el forma a que ruta va a hacer el post, asi que necesitas indicar la ruta lo cial puedes hacer haciendo uso del helper
Código HTML:
Ver original
  1. <form method="POST" action="{{url('contact')}}">
  2. {{ csrf_field() }}
  3. <div class="form-group">
  4. <label name="email">Email:</label>
  5. <input id="email" name="email" class="form-control">
  6. </div>
También te recomiendo que veas el uso del helper route que me parece mejor opción.
Tambien lee sobre el envio de correos ahora se utiliza los mailables
No es necesario que indiques el flash session tambien lo puedes hacer en la redirección
Código PHP:
Ver original
  1. // En lugar de esto
  2. Session::flash('success', 'Your Email was Sent!');
  3. return redirect('/');
  4.  
  5. //puedes hacer lo siguiente
  6. return redirect('/')->withSuccess('Your Email was Sent!');
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 25/09/2018, 15:42
 
Fecha de Ingreso: abril-2010
Mensajes: 52
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Formulario de Contacto Laravel

Muchas Gracias hhs.
He probado con tus apuntes. Pero sigo igual.
  #4 (permalink)  
Antiguo 25/09/2018, 22:19
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.975
Antigüedad: 5 años, 4 meses
Puntos: 373
Respuesta: Formulario de Contacto Laravel

Algún error en pantalla ? ya revisaste el log de laravel ?
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 26/09/2018, 03:39
 
Fecha de Ingreso: abril-2010
Mensajes: 52
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Formulario de Contacto Laravel

No tengo error. Se queda clavado en el form de contacto.
  #6 (permalink)  
Antiguo 26/09/2018, 08:23
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.975
Antigüedad: 5 años, 4 meses
Puntos: 373
Respuesta: Formulario de Contacto Laravel

Publica tu archivo .env y también tus rutas si no te aparecen errores es probable que no tengas en modo de debug laravel.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #7 (permalink)  
Antiguo 26/09/2018, 10:50
 
Fecha de Ingreso: abril-2010
Mensajes: 52
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Formulario de Contacto Laravel

Archivo .env (sustituyendo claves por xxxxx):

PP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:HNRlFJDxg/qa133xsegrfDpaG3+bJtK6GM+uobfALi4=
APP_DEBUG=true
APP_URL=http://www.misitio.com/

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=db748432832.db.1and1.com
DB_PORT=3306
DB_DATABASE=db748432832
DB_USERNAME=dbo748432832
DB_PASSWORD='xxxxx'

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=xxxxxx
MAIL_ENCRYPTION=tls

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"


Y mis rutas:

Route::get('/contact', '[email protected]');
Route::post('/contact', '[email protected]');
  #8 (permalink)  
Antiguo 26/09/2018, 13:37
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.975
Antigüedad: 5 años, 4 meses
Puntos: 373
Respuesta: Formulario de Contacto Laravel

Parece que todo esta bien, por cierto si estas en modo de desarrollo nunca debes de poner un dominio valido en el APP_URL, ademas el acceso a la base de datos debe de ser local si estas en desarrollo ya que los hosting generalmente no te permiten conexiones remotas. Fuera de eso parece que lo demas esta bien
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #9 (permalink)  
Antiguo 26/09/2018, 15:48
 
Fecha de Ingreso: abril-2010
Mensajes: 52
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Formulario de Contacto Laravel

hhs, gracias por tu tiempo e interés.



La zona horaria es GMT -6. Ahora son las 09:41.