使用laravel发送电子邮件,但无法识别变量

mXX*_*mXX 27 php email undefined laravel laravel-4

我正在尝试通过Laravel发送电子邮件,但我收到此错误:

未定义的变量:contactEmail

即使它已在上面定义.这里出了什么问题?

调节器

$contactName = Input::get('name');
$contactEmail = Input::get('email');
$contactMessage = Input::get('message');

$data = array('name'=>$contactName, 'email'=>$contactEmail, 'message'=>$contactMessage);
Mail::send('template.mail', $data, function($message)
{   
    $message->from($contactEmail, $contactName);
    $message->to('info@aallouch.com', 'myName')->subject('Mail via aallouch.com');
});
Run Code Online (Sandbox Code Playgroud)

编辑:

template.mail

Name: {{$name}}
Email: {{$email}}
Message:{{$message}}
Run Code Online (Sandbox Code Playgroud)

Ant*_*iro 74

由于您的$ data变量定义为:

$data = array(
    'name'=>$contactName, 
    'email'=>$contactEmail, 
    'message'=>$contactMessage
);
Run Code Online (Sandbox Code Playgroud)

您的视图中没有可用的$数据,但您可以直接使用:

{{ $name }}
{{ $email }}
{{ $message }}
Run Code Online (Sandbox Code Playgroud)

编辑:

你的控制器应该有:

    $contactName = Input::get('name');
    $contactEmail = Input::get('email');
    $contactMessage = Input::get('message');

    $data = array('name'=>$contactName, 'email'=>$contactEmail, 'message'=>$contactMessage);
    Mail::send('template.mail', $data, function($message) use ($contactEmail, $contactName)
    {   
        $message->from($contactEmail, $contactName);
        $message->to('info@aallouch.com', 'myName')->subject('Mail via aallouch.com');
    });
Run Code Online (Sandbox Code Playgroud)

您必须使用将变量传递给闭包

use ($contactEmail, $contactName)
Run Code Online (Sandbox Code Playgroud)

如上图所示.

  • 你展示"使用`use($ contactEmail,$ contactName)`"将变量传递给闭包是非常有用的.我从来不知道如何将变量传递给闭包.谢谢! (4认同)
  • 不,但只是做了它并得到错误:`类Illuminate\Mail\Message的对象无法转换为字符串` (2认同)

Vik*_*man 5

我遇到了这个错误,我已经解决了。我已经用$data替换了$message关键字$comment。

下面的例子:

$data = array('name' => 'vikas', 'message' => 'test message');
Run Code Online (Sandbox Code Playgroud)

看法

{{ $name }}
{{ $message }}
Run Code Online (Sandbox Code Playgroud)

出错了

$data = array('name' => 'vikas', 'comment' => 'test message');

{{ $name }}
{{ $comment }}
Run Code Online (Sandbox Code Playgroud)

现在它工作正常。