【问题标题】:ErrorException in helpers.php line 533:helpers.php 第 533 行中的 ErrorException:
【发布时间】:2017-10-23 08:28:38
【问题描述】:

我正在使用 laravel 5.4 制作联系表格,我想在有人发送联系表格时收到一封电子邮件。我正在使用 Mailtrap 接收电子邮件。

我遇到的问题是提交表单时出现此错误。

helpers.php 第 533 行中的错误异常: 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 />

【问题讨论】:

  • 你能调试$data吗?在联系功能验证前添加dd($data);
  • 你需要保存你传递给视图的变量,否则直接输入刀片不会得到它
  • @Jerodev - 当我调试$data 时,我得到了我在表单中输入的信息array:5 [▼ "_token" =&gt; "mI35WN4IGUlefCi4XXT80nhKcM2Cc3esosFtUTKX" "name" =&gt; "test name" "email" =&gt; "email@gmail.com" "subject" =&gt; "test" "message" =&gt; "drgrg" ]
  • @Exprator - 这不是$dataMail::send(('templates::emails.contact', $data, function($message) 行中所做的,它抓取数据并将其传递给contact.blade.php
  • @Shiva478 那么你需要传递 $data['name'] 而不是 $name

标签: laravel laravel-5


【解决方案1】:

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

更改要传递的数据

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

将您的视图代码更改为

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

当输入中不可用时,您还尝试访问视图中的主题。

【讨论】:

  • @Shiva478 更新了我的答案。调用 send 时将 $data 更改为 compact('data')
【解决方案2】:

你需要在你的 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);
    }
}

有时您会遇到错误,因为您的变量与存储的变量具有相同的名称(如数据、计时器、for ...等)

【讨论】:

    猜你喜欢
    • 2018-06-28
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 2017-09-24
    • 2015-07-05
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多