我尝试在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
答案 0 :(得分:1)
嗯,你对事件data
的使用有误:
阅读本文:http://www.yiiframework.com/doc-2.0/yii-base-event.html#$data-detail
附加事件处理程序时传递给
yii\base\Component::on()
的数据。
而且:http://www.yiiframework.com/doc-2.0/yii-base-component.html#on()-detail
关于第三个参数:
触发事件时要传递给事件处理程序的数据
无论如何,你不需要这个,你可以简单地使用$event->sender
:
function ($event) {
var_dump($event->sender); // this will dump your ContentSearch model
die;
}