【问题标题】:Issues with Laravel MailablesLaravel Mailables 的问题
【发布时间】:2017-04-17 17:21:42
【问题描述】:

我正在尝试使用 Laravel 5.3 在 Laravel 中创建一个联系表单,但我在这里遇到了这个令人讨厌的错误:

helpers.php 第 519 行中的错误异常: htmlspecialchars() 期望参数 1 是字符串,给定对象(查看:/Applications/XAMPP/xamppfiles/htdocs/meps/resources/views/emails/contactemail.blade.php)

这是我使用的文件:

联系表格

<div class="contact-form">
    <form class="margin-clear" role="form" action="{{ url('/sendmail') }}" method="POST">

    {{ csrf_field() }}
        <div class="form-group has-feedback">
            <label for="name">Name*</label>
            <input type="text" class="form-control" id="name" name="name" placeholder="">
            <i class="fa fa-user form-control-feedback"></i>
        </div>
        <div class="form-group has-feedback">
            <label for="email">Email*</label>
            <input type="email" class="form-control" id="email" name="email" placeholder="">
            <i class="fa fa-envelope form-control-feedback"></i>
        </div>
        <div class="form-group has-feedback">
            <label for="subject">Subject*</label>
            <input type="text" class="form-control" id="subject" name="subject" placeholder="">
            <i class="fa fa-navicon form-control-feedback"></i>
        </div>
        <div class="form-group has-feedback">
            <label for="message">Message*</label>
            <textarea class="form-control" rows="6" id="message" name="message" placeholder=""></textarea>
            <i class="fa fa-pencil form-control-feedback"></i>
        </div>
        <input type="submit" value="Submit" class="btn btn-primary">
    </form>
</div>

控制器功能

public function sendmail(Request $request, Mailer $mail) {

    $mail->to('kaley36_aw@yahoo.com')->send(new ContactEmail($request->name, $request->email, $request->subject, $request->message));

    $request->session()->flash('mail-sent', 'Your email has been sent.');

    return redirect('/contact');

}

Mailable 类

class ContactEmail extends Mailable
    {
    use Queueable, SerializesModels;

    public $name;
    public $email;
    public $subject;
    public $message;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($name, $email, $subject, $message)
    {
        $this->name = $name;
        $this->email = $email;
        $this->subject = $subject;
        $this->message = $message;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->from($this->email)->view('emails.contactemail');
    }
}

这是路线

Route::post('sendmail', 'EmailController@sendmail');

【问题讨论】:

  • 看起来您在 contactemail.blade.php 文件的某处有一个对象包裹在 {{ }} 中。您只想在其中放置字符串(或具有__toString 魔术方法的对象)。
  • 这是实际的电子邮件模板contactemail.blade.php

标签: laravel email laravel-5.3


【解决方案1】:

你可能看错了观点。错误指向

/views/emails/contactemail.blade.php

但是这个视图有一个&lt;form&gt;,除非你通过电子邮件向你的用户发回一个表单,这看起来更像你的联系表单视图而不是你的电子邮件视图。比如:

/views/contact.blade.php(或任何你有的形式)

至于错误,你必须有一个{{ $variable or functionCall() }},它接收的不是字符串,而是对象。

【讨论】:

    【解决方案2】:

    我想通了。问题在于变量 $message,Laravel 将它包装在一个名为 Message 的实际对象中。我所要做的就是将变量名更改为 $theMessage,然后它就可以找到了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-01
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      相关资源
      最近更新 更多