Email Blade 获得未定义的变量:使用 Laravel 队列时

Email Blade Got Undefined variable: when using Laravel queue

每当有人在我的网站上下新订单时,我都会尝试将成功的电子邮件排队。我使用事件和侦听器来完成此操作。下面是我在监听器文件上发送电子邮件的代码:

NewOrderListener.php

 public function handle($event)
    {
        try {
            dump('new order registered (listernerrr)');
    
            $email = $event->order['email'];
            
            Mail::send('email.order_mail_customer', $event->order, function($message) use($email)
            {
                dump($email);
                $sub_data = (Lang::has(Session::get('front_lang_file').'.FRONT_ORDER_SUCCSESS')) ? trans(Session::get('front_lang_file').'.FRONT_ORDER_SUCCSESS') : trans($this->FRONT_LANGUAGE.'.FRONT_ORDER_SUCCSESS');

                dump($sub_data);

                $message->to('googleadmin@gmail.com')->subject($sub_data);
                dump('email sent');

            });

        } catch (\Exception $e) {
            dump($e->getMessage());
        }

    }

email.order_mail_customer.blade.php 文件:

<html>
    <body style="margin: 0; padding: 0;">
        @if(count($order_details) > 0)

        <table cellpadding="0" cellspacing="0" width="600" align="center" style="border:1px solid #ddd;">
                    
            
            <tr>
                <td style="border-top: 5px solid #f7d501;">
                <table style="padding:10px;width:100%;">
                    <tr>
                        <td align="center">
                            @php $path = url('').'/public/images/noimage/default_image_logo.jpg'; @endphp
                            @if(count($logo_settings_details) > 0)
                            @php
                                foreach($logo_settings_details as $logo_set_val){ }
                            @endphp
                            @if($logo_set_val->admin_logo != '')
                                @php $filename = public_path('images/logo/').$logo_set_val->admin_logo; @endphp 
                                @if(file_exists($filename))
                                @php $path = url('').'/public/images/logo/'.$logo_set_val->admin_logo; @endphp
                                @endif
                            @endif                          
                            @endif
                            <img src="{{$path}}" alt="@lang(Session::get('front_lang_file').'.ADMIN_LOGO')" class="img-responsive logo"  width="100">
                        </td>                       
                    </tr>
                </table>
                </td>
            </tr>
            

异常信息: 未定义的变量:logo_settings_details in email.order_mail_customer.blade.php

以上代码运行当我设置队列驱动程序=sync并且没有队列时OK。

但是当我通过设置 driver=database 并将 ShouldQueue 实现到 NewOrderListener 文件来使用队列时,我在 order_mail_customer.blade.php 上得到了未定义的 property/variable。希望有人能帮我解决这个问题。提前致谢。

没关系,我发现了问题,这个变量不能被调用,因为这个变量是静态变量,它在队列得到 运行 之前就被销毁了。