2017-03-07 14 views
1

Laravel 5.4で簡単な連絡フォームを使って自分宛にEメールを送信しようとしています。Laravel 5.4 Mail、passing data

私のフォームは、4つの入力:Nom、プレノム、電子メール、メッセージです。 私はちょうどこれが私のコントローラである

私のメールテンプレートにデータを電子メールで送信したい:

$this->validate($request, [ 
    'nom' => 'required|alpha', 
    'prenom' => 'required|alpha', 
    'email' => 'required|email', 
    'message' => 'required', 
    ]); 

    $data = [ 
     'nom' => $request->nom, 
     'prenom' => $request->prenom, 
     'email' => $request->email, 
     'message' => $request->message, 
    ]; 

    Mail::to('myadress')->send(new Contact($data)); 

は、これが私の「連絡先」のメールです:

public $data; 

public function __construct($data) 
{ 
    $this->nom = $data['nom']; 
    $this->prenom = $data['prenom']; 
    $this->email = $data['email']; 
    $this->message = $data['message']; 
} 

/** 
* Build the message. 
* 
* @return $this 
*/ 
public function build() 
{ 
    return $this->view('emails.hello')->with([ 
       'nom' => $this->nom, 
       'prenom' => $this->prenom, 
       'email' => $this->email, 
       'message' => $this->message, 
      ]); 
} 

そして、これは私のメールでありますテンプレート:

<!DOCTYPE html> 
 
<html lang="en-US"> 
 
<head> 
 
    <meta charset="utf-8"> 
 
</head> 
 
<body> 
 
<h2>Demande d'informations </h2> 
 

 
<div> 
 
    <p> 
 
     Vous recevez ce mail via le formulaire de contact du site . 
 
    </p> 
 
    <p> 
 
     Adresse mail du contact: {{ $email }} 
 
    </p> 
 
    <p> 
 
     Nom: {{ $nom }}/Prénom: {{ $prenom }} 
 
    </p> 
 
    <h3>Message du contact:</h3> 
 
    <p> 
 
     {{ $message }} 
 
    </p> 
 
</div> 
 

 
</body> 
 
</html>

文字列としてオブジェクトを渡すことができないというエラーメッセージが表示されます。 Laravel Mailを初めてご利用いただきありがとうございます。

+0

私はMailファサードを使用してから1分です。しかし、私はあなたの問題だと思う: 'Mail :: to( 'myadress') - > send(new Contact($ data));'私はsend(..)が文字列を予期し、モデルを渡していると思う。 – devk

+0

ドキュメントには次のものがあります。https://laravel.com/docs/5.4/mail#sending-mail – Znne

+0

大丈夫です。私が気にしていなかったのは、マークダウンクラスを生成するための 'php artisan make:mail'があることを知らなかったからです。あなたがモデルを渡していると思いました(DBモデルのように)。 – devk

答えて

4

ですので、ご了承ください。私は私の問題を発見した:

public function __construct($data) 
{ 
    $this->data = $data; 
} 

そして:私のブレードファイルで

public function build() 
{ 
    return $this->from('[email protected]', 'my site') 
    ->subject('hello you') 
    ->view('emails.hello')->with(['data', $this->data]); 
} 

Adresse mail du contact: {{ $data['email'] }} 

ジュスト私は私の見解ではオブジェクトとして配列を表示しようとしたので... だから私の悪い!