2013-07-25 12 views
5
Log::info('Sending email', array(
    'title' => $attributes['title'], 
    'recipient' => $attributes['email'] 
)); 

Mail::queue('emails.welcome', $attributes, function($message) use ($attributes) 
{ 
    $message 
     ->to($attributes['email']) 
     ->subject($attributes['title']); 
}); 

Sự cố với việc đóng cửa được chuyển đến Mail::queue. Chuyện gì vậy? Điều này hoàn toàn giống với những gì là in the docs.Không được phép tuần tự hóa 'Đóng cửa' khi gửi thư được xếp hàng đợi

+1

Biến '$ attributes' của bạn là gì? Nó có chứa đối tượng 'Paginator' không? Bạn có thể 'var_dump' nó cho chúng tôi? – fideloper

+0

Đó có phải là lỗi chính xác không? 'Serialization of' Closure 'không được phép'? –

Trả lời

1

Vâng, tôi giả sử rằng $attributes là thứ bạn đang cố chuyển đến chế độ xem e-mail welcome. NẾU nó là, vì vậy bạn sẽ cần phải đặt nó trong một mảng. Trong trường hợp đó, phải là một cái gì đó loike rằng:

Mail::queue('emails.welcome', array('attributes' => $attributes), function($message) use ($attributes) 
{ 
    $message 
     ->to($attributes['email']) 
     ->subject($attributes['title']); 
}); 

... điều này có thể làm việc cho bạn! : D

+0

Và làm cách nào để truy cập vào các thuộc tính này ngay bây giờ? – Fractaliste

+0

@Fractaliste ... vì nó là một mảng, trong thực tế nó là! : D –

+1

Phím ''attributes'' trở thành tên var bên trong khung nhìn. Hãy nói rằng, vì lợi ích của các đối số, rằng tôi có này 'mảng ('atrr' => $ thuộc tính);', sau đó tôi sẽ phải gọi cho họ, bên trong xem, theo cách đó '$ atrr ['email' ] '. Hiểu rồi? –

1

Tôi đã chạy vào cùng một thông báo lỗi. Vấn đề của tôi là thuộc tính $ của tôi là một mô hình Eloquent, mà tôi đoán là không thể tuần tự hóa được. Tôi đã phải thay đổi:

Mail::queue('emails.welcome', array('attributes' => $attributes), function($message) use ($attributes)

để

$attrArray = $attributes->toArray(); Mail::queue('emails.welcome', array('attributes' => $attributes), function($message) use ($attrArray)

0

Tôi biết bài này là cũ nhưng gần đây tôi đã là tốt lỗi này. Và nguyên nhân là đặt một trường hợp yêu cầu $ trong thư trả lại hàng đợi thư.

Mail::queue('emails.welcome',$data,function(){ 

$email = $request->input('email'); // <- apparently this will cause a closure error 


}); 

Tôi cũng đã học được từ việc tìm kiếm bạn không thể đặt dữ liệu không thể thực hiện được bên trong bao đóng. Điều đó bao gồm các mô hình hoặc đối tượng hùng hồn.

-1

Sự cố đang sử dụng $ this bên trong phần đóng. Kiểm tra tệp SerializableClosures.php và hàm serialize(). $ this-> to và $ this-> subject là tham chiếu đến các trường trong Class và không có trong Closure để sửa mã bạn phải biến chúng thành biến cục bộ và chuyển chúng tới đóng.