helpers.php第533行中的ErrorException:

时间:2017-05-23 11:44:14

标签: laravel laravel-5

我正在用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 />

2 个答案:

答案 0 :(得分:0)

你需要在ur cantact函数中添加$ subject或从cantact.blade.php中删除它,试试这段代码:

&#13;
&#13;
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;
&#13;
&#13;

有时你得到一个错误,因为你的变量与存储变量的名称相同(如数据,计时器,等等)

答案 1 :(得分:0)

您正在传递包含输入数组的$data。您需要访问它们,如下所示。

更改传递给

的数据
Mail::send('templates::emails.contact', compact('data'), function($message)

将您的观看代码更改为

{{ $data['name'] }}<br/>
{{ $data['email'] }}<br/>
{{ $data['message'] }}<br/>

当您在输入中无法使用时,您还尝试访问视图中的主题。