简体   繁体   中英

laravel : Not able to pass parameters to trait

I created a trait in MailTrait.php, the following is my code

namespace App\Traits;
use Mail;
trait MailTrait
{

    public function fn_send_mail($arr_recepients, $str_subject, $str_content)
    {
        Mail::send('mail.mailsample', ['content' => $str_content], function($message)
        {
            $message->to($arr_recepients);
            $message->from('abc.org', 'abc');
            $message->subject($str_subject);

        });
        if(Mail:: failures())
            return false;
        else
            return true;
    }

}

from my controller called the function fn_send_mail() and passed parameter as below $status = $this->fn_send_mail(['123.gmail.com'],'hai', 'hai');

i am getting this error ErrorException in MailTrait.php line 14: Undefined variable: arr_recepients please help me!!

You should pass the $arr_recepients to the callback-block

Mail::send('mail.mailsample', ['content' => $str_content], function($message) use ($arr_recepients, $str_subject)
{
      $message->to($arr_recepients);
      $message->from('abc.org', 'abc');
      $message->subject($str_subject);
});

The 3rd argument to Mail::send is a closure, and it doesn't have $arr_recepients in scope, nor the subject. You need to use the use . Try this

Mail::send('mail.mailsample', ['content' => $str_content], function($message) use ($arr_recepients, $str_subject)
    { //...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM