web-dev-qa-db-fra.com

Envoi d'email avec laravel, mais ne reconnaît pas la variable

J'essaye d'envoyer un email par Laravel, mais j'obtiens cette erreur: 

Variable non définie: contactEmail

Même si cela a été défini ci-dessus. Qu'est-ce qui ne va pas ici?

Manette

$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');
});

MODIFIER:

template.mail

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

Comme votre variable $ data est définie comme:

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

Vous n’avez pas de données $ disponibles dans votre vue, mais vous pouvez utiliser directement:

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

MODIFIER:

Et votre contrôleur devrait avoir:

    $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');
    });

Vous devez passer vos variables à la clôture en utilisant

use ($contactEmail, $contactName)

Comme montré ci-dessus.

72

J'ai eu cette erreur et je l'ai résolue. J'ai remplacer le mot clé $message par $comment à partir de $ data.

Exemple ci-dessous: 

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

vue 

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

Ça devient une erreur

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

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

Maintenant ça fonctionne bien.

4
Vikas Burman

Si vous regardez code source vous verrez cette ligne:

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

Ainsi, votre champ message est écrasé par cette ligne. Utilisez un autre nom pour le champ, comme text ou comment.

0
mixel