laravel:无法将参数传递给trait

时间:2017-04-28 20:07:33

标签: php laravel traits

我在MailTrait.php中创建了一个特征,以下是我的代码

angular.module('baseApp').controller('dataProcessor', function($scope, $http) {
    $scope.getDataFromDb = function(key) {
        $http.get('/trm/get_data_from_database?key='+key).then(function(response) {
            $scope.processData(response.data.block);
        }, function errorCallback(response) {
                console.log('Failed')
        });
    };
});

从我的控制器调用函数fn_send_mail()并传递参数如下 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; } }

我收到此错误 $status = $this->fn_send_mail(['123.gmail.com'],'hai', 'hai'); 请帮帮我!!

2 个答案:

答案 0 :(得分:1)

您应该将$arr_recepients传递给回调块

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

答案 1 :(得分:-1)

Mail::send的第三个参数是一个闭包,它在范围内没有$arr_recepients,也没有主题。您需要使用use。试试这个

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