Laravel 传递的`event`,和`listeners`中的`event`对象不是一个对象吗? 
                            
                                                    
                        
                    
                    
  
                    
                    在Controller中触发订单生成,打印结果是null,需要拿到的是order model
- 如果说Controller和listeners中的event对象不同,那么Controller传过去的event所包含的属性,listeners中的event应该是拿不到的,实际可以拿到;
- 如果说Controller和listeners中的event对象相同,那么listeners中的event传回来的数据Controller中的event返回是null呢?
我大致简略写下实现过程
<?php
namespace App\Http\Controllers;
use App\Events\OrderEvent;
class DealController extends Controller 
{
    public function ticket(Request  $request) 
    {
        $orderEvent = new  OrderEvent();
        event($orderEvent);
        dd($orderEvent->getOrder());
    }
}我在OrderEvent中只做一件事,保存order model,输出order model
<?php
namespace App\Events;
use App\Chongzhi;
class OrderEvent 
{
    private $_order = null;
    public function success(Chongzhi $order):OrderEvent
    {
        $this->_order = $order;
        return  $this;
    }
    public function getOrder():?Chongzhi
    {
        return  $this->_order;
    }
}在listeners中我只提供了order model
<?php
namespace App\Listeners;
use App\Chongzhi;
class OrderEventSubscriber
{
    public function handleCreateOrder(OrderEvent  $event)
    {
        $event->success(Chongzhi::create());
    }
    public function subscribe($events)
    {
        $events->listen(
            'App\Events\Order\OrderEvent',
            'App\Listeners\OrderEventSubscriber@handleCreateOrder'
        );
    }
} 
           
         
                     
                     
             
             
           
           关于 LearnKu
                关于 LearnKu
               
                     
                     
                     粤公网安备 44030502004330号
 粤公网安备 44030502004330号 
 
推荐文章: