Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 20.01.2015 10:39:17

Nelz

Функция

Всем привет.

Дума мало что общего с вопросом фреймворка, но все же. Есть функция getExpire() в моделе Task, user_id ид юзера из таблиц.

public static function getExpire()
{   
     $tasks = Task::where('task_status','=',0)->get();

     foreach($tasks as $task) {
        Task::getNotificationSend($task->user_id);
     }
}

public static function getNotificationSend($userid)
{
    $userdata =  User::find($userid);

    $dataArray = array(
           'email' => $userdata->email,
           'fullname' => $userdata->fullname,
     );

     Mail::send('emails.tasks.expire', $dataArray, function ($message) {
            $message->to($userdata->email, $userdata->fullname)->subject('Срок задачи истек!');
     });
}

в функции getExpire() передаю по циклу ид юзера на функцию getNotificationSend()
в функции getNotificationSend()  получаю данные юзера через ид и передаю собщ.

Ошибка Undefined variable userdata. Пробовал через глобальную переменную, тоже ошибка.
Кроме ид юзера нужен передать другие данные задач дальше как обычно по собщ.

Как тут быть?

#2 20.01.2015 10:43:00

Re: Функция

В PHP 5.3 при использовании внешних переменных в замыкании нужно добавлять use.

PHP
     Mail::send('emails.tasks.expire'$dataArray, function ($message) use ($userdata) {

Не в сети

#3 20.01.2015 10:59:13

Re: Функция

Proger_XP пишет:

}%В PHP 5.3 при использовании внешних переменных в замыкании нужно добавлять **use**.
%%(php)
     Mail::send('emails.tasks.expire', $dataArray, function ($message) use ($userdata) {
%%

Сделал так

Mail::send('emails.tasks.expire', $dataArray, function ($message) use ($userdata) {
      $message->to($userdata->email, $userdata->fullname)->subject('Срок задачи истек!');
});

Ошибок нету. Папка OpenServer\userdata\tmp\email пусто

конфиг mail.php

return array(
	'driver' => 'mail',
	'host' => 'smtp.mailgun.org',
	'port' => 587,
	'from' => array('address' => 'test@mail.com', 'name' => 'Test'),
	'encryption' => 'tls',
	'username' => null,
	'password' => null,
	'sendmail' => '/usr/sbin/sendmail -bs',
	'pretend' => false,
);

как теперь проверит?  Сама отправка почты работает,проверял.

Не в сети

#4 20.01.2015 12:52:43

Re: Функция

Так не понял где косяк. Саму функцию же он по циклу катает и передает.

Не в сети

Подвал раздела