【发布时间】:2020-03-27 14:39:05
【问题描述】:
所以我有一个简单的表单,我希望每当用户提交表单时将其通过电子邮件发送给我,但我不确定问题是什么,因为每当我提交表单时我收到 500 错误,我不知道为什么。
这是表格:
<div class="contact" id="contact">
<form action="{{url('/contact')}}" method="post">
{{ csrf_field() }}
<input type="text" class="fname" name="firstname" placeholder="First Name">
<input type="text" class="lname" name="lastname" placeholder="Last Name">
<input type="text" class="address" name="address" placeholder="Address">
<input type="text" class="email" name="email" placeholder="Email">
<textarea id="subject" name="message" placeholder="Message" style="height:200px"></textarea>
<label class="checkbox-label">
<input type="checkbox" class="yard" name="yard"> I Want a Yard Sign
</label>
<br>
<label class="checkbox-label">
<input type="checkbox" class="host" name="host"> Host a Meet and Greet
</label>
<br>
<input type="submit" value="Get More Information">
<br>
</form>
</div>
在我的网络路由文件中,我设置了两条路由
Route::get('/contact', function () {
return view('contact');
});
Route::post('/contact', function (Request $request) {
Mail::send(new ContactMail($request));
return redirect('/');
});
我创建了我的邮件文件
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class ContactMail extends Mailable
{
use Queueable, SerializesModels;
public $email;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct()
{
$this->email = $request;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->subject('New Contact Mail')
->from($this->email->email, $this->email->firstname)
->to('test@gmail.com')
->view('email.contactmail');
}
}
然后是我的简单刀片文件
{{ $email->content }}
每当我提交表单或尝试调用路由时,我都会收到 500 错误,我不知道为什么。
【问题讨论】:
-
在您的
ContactMail类构造函数中,您分配了一个未定义的变量$request。 -
你真的应该在开发中打开错误报告。这样,您将得到有意义的错误,而不是针对用户的一般错误 500。
-
是的,所以我忘了添加 use Illuminate\Http\Request;但我仍然遇到同样的错误
-
这不是你的问题。您的问题是您没有定义构造函数来获取参数。
-
为了将来参考,问题的完整细节将在您的 Laravel、PHP 和/或 Web 服务器日志中。如果你不使用它们,你就会失明。