Laravel 4에서 클로저에 데이터 전달


108

Laravel 4에서 Mail 클래스를 사용하려고하는데 $ m 개체에 변수를 전달할 수 없습니다.

$ team 개체에는 DB에서 웅변 적으로 얻은 데이터가 포함되어 있습니다.

Mail::send('emails.report', $data, function($m)
{
   $m->to($team->senior->email, $team->senior->first_name . ' '. $team->senior->last_name );
   $m->cc($team->junior->email, $team->junior->first_name . ' '. $team->junior->last_name );
   $m->subject('Monthly Report');
   $m->from('info@website.com', 'Sender');
});

어떤 이유로 $ team 개체를 사용할 수없는 오류가 발생합니다. 스코프와 관련이 있다고 생각합니다.

어떤 아이디어?


저에게는 똑같은 시나리오입니다. Mail :: send 문제로 인해 클로저에 변수를 전달한 다음 다시 이것으로 돌아 오는 방법을 검색하게됩니다. 아마도 이것에 대한 laravel 메일러 문서에 추가해야 할 사인이 있습니까?
ShaunUK

답변:


231

$team함수 외부 에서 변수 를 인스턴스화 한 경우 함수 범위에 포함되지 않습니다. use 키워드를 사용하십시오 .

$team = Team::find($id);
Mail::send('emails.report', $data, function($m) use ($team)
{
   $m->to($team->senior->email, $team->senior->first_name . ' '. $team->senior->last_name );
   $m->cc($team->junior->email, $team->junior->first_name . ' '. $team->junior->last_name );
   $m->subject('Monthly Report');
   $m->from('info@website.com', 'Sender');
});

참고 : 사용중인 함수는 PHP 클로저 (익명 함수) 입니다. Laravel 전용이 아닙니다.


3
감사합니다. 이렇게 '사용'을 할 수 있다는 것을 몰랐습니다. 나는 이것을 더 빨리 배울 수 있었을 뿐이다.
Douglas.Sesar 2014-07-20

2
또한 Laravel 5 Maill :: 큐 내 문제를 해결하기 위해 노력
DavidHyogo

@DavidHyogo 나도,이 게시물 찾을 수 기쁘게
atom2ueki
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.