2016-12-02 49 views
0

我试图创建一个使用Laravel 5.3 Laravel一个接触的形式,但我得到这个讨厌的错误在这里:问题与Laravel Mailables

在helpers.php线ErrorException 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('[email protected]')->send(new ContactEmail($request->name, $request->email, $request->subject, $request->message)); 

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

    return redirect('/contact'); 

} 

可邮寄类

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', '[email protected]'); 
+0

看起来您的'contagtemail.blade.php'文件中有一个对象被包裹在“{{}}”中。你只想在那里放置字符串(或者带有'__toString'魔术方法的对象)。 – user3158900

+0

这是实际的电子邮件模板contactemail.blade.php – Kaley36

回答

0

你可能看错视图。错误指向

/views/emails/contactemail.blade.php 

但是,这种观点有<form>除非你是发回给你的用户通过电子邮件形式,这看起来更像是您的联系方式视图,而不是您的电子邮件视图。喜欢的东西:

/views/contact.blade.php(或任何你在那里有一个表格)

至于错误,你必须有一个{{ $variable or functionCall() }}未收到字符串,但对象。

0

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