Итак, у меня есть этот веб-сайт, который я разрабатываю, всего лишь одна страница начальной загрузки с несколькими разделами автоматической прокрутки. На странице есть раздел рассылки, где зритель может ввести свой адрес электронной почты, чтобы подписаться. Форма для этого работает нормально. Но проблема внизу, есть контактное окно для ввода «Имя, Электронная почта, Тема и Сообщение», где зритель может отправить контактное сообщение.
Базовая структура Код для контактной формы:
{{ Form::open([
'action' => 'MailController@contactForm',
'class' => 'contactForm',
'method' => 'POST',
'files' => true,
]) }}
<div class="form-group">
{{ Form::text('name', $value = NULL, $attributes = array(
'id' => 'name',
'placeholder' => 'Your Name',
'class' => 'form-control',
'data-rule' => 'minlen:4',
'data-msg' => 'Please enter at least 4 chars',
)) }}
@yield('div')
{{ Form::email('email_two', $value = NULL, $attributes = array(
'id' => 'email_two',
'placeholder' => 'Your Email',
'class' => 'form-control',
'data-rule' => 'email',
'data-msg' => 'Please enter a valid email',
)) }}
@yield('div')
{{ Form::text('subject', $value, $attributes = array(
'id' => 'subject',
'placeholder' => 'Subject',
'class' => 'form-control',
'data-rule' => 'minlen:4',
'data-msg' => 'Please enter at least 8 chars of subject',
)) }}
@yield('div')
{{ Form::textarea('message', $value, $attributes = array(
'id' => 'message',
'placeholder' => 'Message or File',
'class' => 'form-control',
'rows' => 5,
'data-rule' => 'required',
'data-msg' => 'Please write something for us',
)) }}
{{ Form::close() }}
Он выводит красивую красивую форму с моими css и js. Код для контроллера:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Mail\Mailer;
use Illuminate\Http\UploadedFile;
class MailController extends Controller {
protected $request;
protected $mailer;
//method to send the subscriber email (this one works fine)
public function subscribe (Request $request, Mailer $mailer) {
// grab POST data varaiables
$this->request = $request;
if ($request->filled('email_one')) {
// $request->flash();
$email_one = $request->email_one; //$request->input('email_one')
$mailer->to($email_one)
->send(new \App\Mail\Newsletter($email_one));
return back();
}
}
//method to send the contact form is giving me headaches
public function contactForm (Request $request, Mailer $mailer) {
$this->request = $request;
// $request->flash();
$email_two = $request->email_two;
$name = $request->name;
$subject = $request->subject;
$message = $request->message;
$mailer->to('[email protected]')
->send(new \App\Mail\ContactForm($data));
return back();
}
}
Код для рассылки, которая не работает:
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class ContactForm extends Mailable {
use Queueable, SerializesModels;
// data to be used in view
public $email_two;
public $name;
public $subject;
public $message;
public $data;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($data) {
$this->email_two = $email_two;
$this->name = $name;
$this->subject = $subject;
$this->message = $message;
$data = array();
$data['email'] = $this->email_two;
$data['name'] = $this->name;
$data['subject'] = $this->subject;
$data['message'] = $this->message;
}
/**
* Build the message.
*
* @return $this
*/
public function build() {
return $this->markdown('emails.contactform', compact('data'))
// ->subject('Message from Contact Box.')
->from('[email protected]');
// ->attach('/path/to/file');
}
}
Код для уценки контактной формы:
@component('mail::message')
# New Message Received.
You have received one new message. Please find below:
@component('mail::panel')
From: {{ $email_two }} <br>
Name: {{ $name }} <br>
Subject: {{ $subject }} <br>
Message: {{ $message }}
@endcomponent
@component('mail::panel')
This is the panel content.
@endcomponent
Thanks,<br>
{{ config('app.name') }}
@endcomponent
Итак, друзья, вот и все. Когда я отправляю информационный бюллетень, он работает успешно. Я тестирую MailTrap. Но когда я заполняю контактную форму, ничего не происходит. Страница не загружается. Никаких сообщений не приходит. Когда я пытаюсь отправить только одну переменную (например, тему, имя, адрес электронной почты или сообщение), это работает. Но отправка нескольких переменных не работает.
Пожалуйста посоветуй.
contactForm
вы отправляете$data
на\App\Mail\ContactForm
, но$data
не существует. поместите свои четыре переменные в массив$data
- person Roman Meyer   schedule 09.12.2018