我正在用laravel 5.4制作联系表格,我想在有人发送联系表格时收到电子邮件。我正在使用Mailtrap接收电子邮件。
我遇到的问题是我在提交表单时收到此错误。
helpers.php第533行中的ErrorException: htmlspecialchars()期望参数1为字符串,给定对象(查看:C:\ xampp \ htdocs \ website \ app \ Modules \ Templates \ Resources \ Views \ emails \ contact.blade.php)
我的联系功能
public function contact()
{
$data = Input::all();
$rules = array(
'name' => '',
'email' => '',
'message' => '',
);
$validator = Validator::make($data, $rules);
if($validator->passes())
{
Mail::send('templates::emails.contact', $data, function($message){
$message->from(Input::get('email'), Input::get('name'));
$message->to('info@site.com', 'Info')->subject('Testing contact form');
});
Session::flash('success', 'Your message has been sent successfully.');
return back();
}else{
return back()->withErrors($validator);
}
}
和我的contact.blade.php这是发给我的信息
<h1>We been contacted by.... </h1>
{{ $name }}<br />
{{ $email }}<br />
{{ $subject }}<br />
{{ $message }}<br />
答案 0 :(得分:0)
你需要在ur cantact函数中添加$ subject或从cantact.blade.php中删除它,试试这段代码:
public function contact()
{
$cdata = Input::all();
$crules = array(
'name' => '',
'email' => '',
'subject' => '',
'message' => '',
);
$validator = Validator::make($cdata, $crules);
if($validator->passes())
{
Mail::send('templates::emails.contact', $cdata, function($message){
$message->from(Input::get('email'), Input::get('name'));
$message->to('info@site.com', 'Info')->subject('Testing contact form');
});
Session::flash('success', 'Your message has been sent successfully.');
return back();
}else{
return back()->withErrors($validator);
}
}
&#13;
有时你得到一个错误,因为你的变量与存储变量的名称相同(如数据,计时器,等等)
答案 1 :(得分:0)
您正在传递包含输入数组的$data
。您需要访问它们,如下所示。
更改传递给
的数据Mail::send('templates::emails.contact', compact('data'), function($message)
将您的观看代码更改为
{{ $data['name'] }}<br/>
{{ $data['email'] }}<br/>
{{ $data['message'] }}<br/>
当您在输入中无法使用时,您还尝试访问视图中的主题。