Yii 2:使用 Event 无法将数据从 trigger() 传递到 on()
Yii 2: using Event can not pass data from trigger() to on()
我尝试在 var_dump
上执行搜索后添加一个事件,但数据没有
不通过。为什么?
触发器:
class ContentSearch extends Content
{
const EVENT_AFTER_SEARCH = 'afterSearch';
public function search($params)
{
$e = new ModelEvent;
$e->data = $this;
$this->trigger(self::EVENT_AFTER_SEARCH, $e);
}
}
在:
class ContentController extends Controller
{
public function actionIndex()
{
$searchModel = new ContentSearch();
$searchModel->on($searchModel::EVENT_AFTER_SEARCH, function ($event) {
var_dump($event->data);
die;
});
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
}
}
转储
null
好吧,你对事件 data
的用法是错误的:
读这个:http://www.yiiframework.com/doc-2.0/yii-base-event.html#$data-detail
The data that is passed to yii\base\Component::on()
when attaching an event handler.
还有这个:http://www.yiiframework.com/doc-2.0/yii-base-component.html#on()-detail
关于第三个参数:
The data to be passed to the event handler when the event is triggered
无论如何,你不需要这个,你可以简单地使用 $event->sender
:
function ($event) {
var_dump($event->sender); // this will dump your ContentSearch model
die;
}
我尝试在 var_dump
上执行搜索后添加一个事件,但数据没有
不通过。为什么?
触发器:
class ContentSearch extends Content
{
const EVENT_AFTER_SEARCH = 'afterSearch';
public function search($params)
{
$e = new ModelEvent;
$e->data = $this;
$this->trigger(self::EVENT_AFTER_SEARCH, $e);
}
}
在:
class ContentController extends Controller
{
public function actionIndex()
{
$searchModel = new ContentSearch();
$searchModel->on($searchModel::EVENT_AFTER_SEARCH, function ($event) {
var_dump($event->data);
die;
});
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
}
}
转储
null
好吧,你对事件 data
的用法是错误的:
读这个:http://www.yiiframework.com/doc-2.0/yii-base-event.html#$data-detail
The data that is passed to
yii\base\Component::on()
when attaching an event handler.
还有这个:http://www.yiiframework.com/doc-2.0/yii-base-component.html#on()-detail
关于第三个参数:
The data to be passed to the event handler when the event is triggered
无论如何,你不需要这个,你可以简单地使用 $event->sender
:
function ($event) {
var_dump($event->sender); // this will dump your ContentSearch model
die;
}