【问题标题】:Laravel Event Not Triggering in ControllerLaravel 事件未在控制器中触发
【发布时间】:2018-11-18 10:20:50
【问题描述】:

我在 Laravel 中创建了交通预订系统。当客户预订新的运输旅行时,我使用事件 (CalculateCustomerBookingolCharges) 计算佣金金额。

我尝试预订新行程,所有数据都已保存,但未计算佣金金额(未触发事件)。

这是我的控制器代码:

public function savenewbooking (Request $request) 
{   
    $createbooking=Booking::create([
        'order_id' => $orderid,
        'token' => $request->input('_token'),
        'booking_id' => $curbookingid,
        'invoice_prefix' => $bookingpre,
        'userid' => $this->userid,
        'user_email' => $customerData->email,
        'trip_amt' => $tripamt,
        'extra_amt' => $totalextraserviceamount,
        'total_amt' => $totalbookingamount,
        'ip_address' => $ipaddress,
        'booking_status' => 1,
        'created_by' => $this->userid
   ]);

   event(new CalculateCustomerBookingolCharges($createbooking));

   //Event::fire(new CalculateCustomerBookingolCharges($createbooking));

   return response()->json([
       'items' => $orderid,
       'error '=> [
            'code' => 'REQUEST_SUCCESSFUL',
            'description'=>'Booking Confirmed'
        ]
   ],200)

}

事件监听器:

<?php

namespace App\Listeners;

use App\Events\CalculateCustomerBookingolCharges;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use App\Booking;
use App\Appsettings;
use Auth;

class CustomerBookingolCharges
{
    /**
     * Create the event listener.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Handle the event.
     *
     * @param  CalculateCustomerBookingolCharges  $event
     * @return void
     */
    public function handle(CalculateCustomerBookingolCharges $event)
    {


        $ourlorrypercentage=Appsettings::Where('config_title','ourlorry_comission')->pluck('config_modified')->first();

        $ourlorryamt=($ourlorrypercentage/100)*$event->booking->total_amt;

        $updatebooking=Booking::Where('id',$event->booking->id)->update(['ourlorry_percentage'=>$ourlorrypercentage,'ourlorry_amount'=>$ourlorryamt,'updated_by'=>Auth::user()->id]);

    }
}

【问题讨论】:

  • 能否请您显示CalculateCustomerBookingolCharges 事件/通知文件?
  • 请确保您已在app.php 中配置了广播设置,并且该事件是通过 ShouldBroadcast 实现的。
  • 随机附注,直到您提供更多代码。调用事件“CustomerBookingolCharges”和监听器“CalculateCu....”不是更好吗?

标签: laravel events laravel-5.4 laravel-5.5 laravel-events


【解决方案1】:

确保在 EventServiceProvider 中注册你的监听器以监听它的相应事件

转到 App\Providers\EventServiceProvider 你会发现名为listen的受保护数组

protected $listen = [

] 

在您的情况下,您的活动可以如下所示进行注册

protected $listen = [
    'App\Events\CalculateCustomerBookingolCharges' => [
        'App\Listeners\CustomerBookingolCharges',
    ],
];

希望能解决问题。

【讨论】:

  • 您可以编辑帖子并添加您的事件类和事件服务提供者类的屏幕截图吗?
猜你喜欢
  • 2014-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-20
  • 2015-10-31
  • 2021-12-30
  • 2021-01-14
  • 2019-04-30
相关资源
最近更新 更多