2016-12-02 46 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,並找到它。