การส่งผ่านข้อมูลไปยังการปิดใน Laravel 4


108

ฉันพยายามใช้ Mail Class ใน Laravel 4 และไม่สามารถส่งผ่านตัวแปรไปยังวัตถุ $ m ได้

ออบเจ็กต์ $ team มีข้อมูลที่ฉันคว้ามาจากฐานข้อมูลด้วยฝีปาก

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 object ไม่พร้อมใช้งาน ฉันคิดว่ามันมีส่วนเกี่ยวข้องกับขอบเขต

ความคิดใด ๆ ?


สถานการณ์เดียวกันสำหรับฉัน ปัญหา Mail :: send ทำให้ฉันค้นหาเกี่ยวกับการส่งผ่านตัวแปรไปยังการปิดแล้วกลับมาที่สิ่งนี้ บางทีสัญญาณบางอย่างจำเป็นต้องเพิ่มในเอกสารจดหมายลาราเวลในเรื่องนี้?
ShaunUK

คำตอบ:


231

หากคุณสร้างอินสแตนซ์$teamตัวแปรนอกฟังก์ชันแสดงว่าไม่อยู่ในขอบเขตฟังก์ชัน ใช้คำสำคัญใช้

$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 Closure (ฟังก์ชันที่ไม่ระบุชื่อ)ซึ่งไม่ได้เป็นเอกสิทธิ์เฉพาะของ Laravel


3
ขอบคุณฉันไม่ทราบว่าคุณสามารถใช้ "ใช้" แบบนั้นได้ ฉันหวังว่าฉันจะได้เรียนรู้สิ่งนี้ให้เร็วกว่านี้
Douglas.Sesar

2
ยังทำงานเพื่อแก้ปัญหาของฉันด้วย Maill :: คิวใน Laravel 5
DavidHyogo

@DavidHyogo ฉันเช่นกันดีใจที่พบโพสต์นี้
atom2ueki
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.