wake-up-neo.net

E-Mail-Versand mit Laravel, aber Variable nicht erkannt

Ich versuche, eine E-Mail über Laravel zu senden, erhalte jedoch folgende Fehlermeldung: 

Nicht definierte Variable: contactEmail

Obwohl es darüber definiert wurde. Was läuft hier falsch?

Controller

$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('[email protected]', 'myName')->subject('Mail via aallouch.com');
});

BEARBEITEN:

template.mail

Name: {{$name}}
Email: {{$email}}
Message:{{$message}}
27
mXX

Da Ihre $ data-Variable definiert ist als:

$data = array(
    'name'=>$contactName, 
    'email'=>$contactEmail, 
    'message'=>$contactMessage
);

In Ihrer Ansicht stehen keine $ -Daten zur Verfügung, Sie können sie jedoch direkt verwenden:

{{ $name }}
{{ $email }}
{{ $message }}

BEARBEITEN:

Und Ihr Controller sollte Folgendes haben:

    $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('[email protected]', 'myName')->subject('Mail via aallouch.com');
    });

Sie müssen Ihre Variablen mit dem Abschluss übergeben

use ($contactEmail, $contactName)

Wie oben gezeigt.

Ich habe diesen Fehler erhalten und habe ihn gelöst. Ich habe $message Schlüsselwort durch $comment von $ data ersetzen.

Beispiel unten: 

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

aussicht 

{{ $name }}
{{ $message }}

Es wird ein Fehler

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

{{ $name }}
{{ $comment }}

Jetzt funktioniert es gut.

4
Vikas Burman

Wenn Sie sich source code ansehen, sehen Sie diese Zeile:

 $data['message'] = $message = $this->createMessage();

Ihr message-Feld wird also von dieser Zeile überschrieben. Verwenden Sie einen anderen Namen für das Feld wie text oder comment.

0
mixel