[英]Locale Get Ignored When Sending Mail with Queue
我正在尋找答案。 Laravel Framework 5.5.44我有一個隊列,每當有人在我的網站上下新訂單時,我都會發送一個 email。 我使用事件和偵聽器來完成此操作。 我的隊列成功發送了 email 但我的語言環境代碼不起作用。 下面是我的代碼:
NewOrderListener.php
public function handle($event)
{
try {
dump('new order registered (listernerrr)');
// dump($event->order);
$email = $event->order['email'];
// $logo_settings_details = Settings::get_logo_settings_details();
// // dump($logo_settings_details);
// $event->order->prepend('logo_settings_details', DB::table('gr_logo_settings')->get());
// array_push($event->order, DB::table('gr_logo_settings')->get());
$event->order['logo_settings_details'] = DB::table('gr_logo_settings')->get();
// $data = [
// 'logo_settings_details' => DB::table('gr_logo_settings')->get(),
// ];
// dd($data);
$get_images = DB::table('gr_no_images')->select('banner_image','restaurant_store_image','restaurant_item_image','product_image','logo_image','landing_image','shop_logo_image','category_image')->first();
if(empty($get_images) === false)
{
$no_item = $get_images->restaurant_item_image;
$event->order['no_item'] = $no_item;
}
$this->general_setting = DB::table('gr_general_setting')->get();
if(count($this->general_setting) > 0){
foreach($this->general_setting as $s){
$event->order['FOOTERNAME'] = $s->footer_text;
}
}
else {
$event->order['FOOTERNAME'] = 'ePickMeUp';
}
// dd($event->order);
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('SUCCESSFUL ORDER 😍');
dump('email sent');
});
} catch (\Exception $e) {
// Log Error
// Log::error($e->getMessage());
// Sent Error To Slack
// Dump Error
dump($e->getMessage());
}
}
order_mail_customer.blade.php
<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>
@if($self_pickup==1)
<tr>
<td>
<table style="width:100%;background:url('{{url('public/images/order_image.jpg')}}')no-repeat; padding:56px 20px;">
<tr>
<td colspan="1" style="text-align:center; font-family:cursive; font-size:35px; padding-bottom: 20px; color: #fff;">
@lang(Session::get('front_lang_file').'.FRONT_THANK_ORDER')
</td>
</tr>
<tr>
<td style="text-align:center; font-family:sans-serif; font-size:17px; padding-bottom: 20px; color: #fff; line-height: 25px;">
@lang(Session::get('front_lang_file').'.API_ORDER_PLACED')
</td>
</tr>
<tr>
<td style="text-align:center; font-family:sans-serif; font-size:17px; padding-bottom: 20px; color: #fff; line-height: 25px;">
@lang(Session::get('front_lang_file').'.ADMIN_TRANSACTION_ID') : {{$transaction_id}}
</td>
</tr>
</table>
</td>
</tr>
為什么所有那些@lang(Session::get('front_lang_file')
沒有在隊列中被調用?希望有人可以幫助我解決這個問題。提前致謝。
因為隊列作業在不同於 session 進程的進程中運行,所以,您無法訪問 session (在這種情況下為語言環境)。 您需要傳遞 session 作為 Job 構造函數的參數。 之類的:
NewOrderListener::dispatch(Event $event, Session $session)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.