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'
);
}
}
推荐文章: