如何让事件知道我需要将3个参数传递给事件的handle方法。
config / web.php
'on eventname' => [EventName::class, 'handle'],
app / events / EventName.php
namespace app\events;
class EventName
{
public function handle($arg1, $arg2, $arg3)
{
}
}
答案 0 :(得分:0)
事件处理程序的签名不正确。事件处理程序仅接受一个参数-事件对象。如果需要将三个参数传递给处理程序,则需要创建自定义事件对象并使用其参数存储这些值。
创建自定义事件:
class MyEvent extends \yii\base\Event {
public $arg1;
public $arg2;
public $arg3;
}
在事件触发器上使用它:
$this->trigger('eventname', new MyEvent([
'arg1' => $arg1,
'arg2' => $arg2,
'arg3' => $arg3,
]));
并在处理程序中使用事件属性:
public function handle(MyEvent $event) {
if ($event->arg1) {
// ...
}
}