diff --git a/Dispatcher/Dispatcher.php b/Dispatcher/Dispatcher.php index 9a40e7ee0..8713f1c08 100644 --- a/Dispatcher/Dispatcher.php +++ b/Dispatcher/Dispatcher.php @@ -65,6 +65,7 @@ final class Dispatcher implements DispatcherInterface public function dispatch(array | string | \Closure $controller, ...$data) : array { $views = []; + $data = $data !== null ? \array_values($data) : null; if (\is_array($controller) && isset($controller['dest'])) { if (!empty($controller['data'])) { diff --git a/Event/EventManager.php b/Event/EventManager.php index ceb609b13..e4cd3973d 100644 --- a/Event/EventManager.php +++ b/Event/EventManager.php @@ -207,6 +207,12 @@ final class EventManager implements \Countable } } + if (!\is_array($data)) { + $data = [$data]; + } + + $data[':triggerGroup'] ??= $group; + $triggerValue = false; foreach ($groups as $groupName => $ids) { foreach ($ids as $id) { @@ -244,10 +250,18 @@ final class EventManager implements \Countable foreach ($this->callbacks[$group]['callbacks'] as $func) { if (\is_array($data)) { - $this->dispatcher->dispatch($func, ...$data); + $data[':triggerGroup'] ??= $group; + $data[':triggerId'] = $id; } else { - $this->dispatcher->dispatch($func, $data); + $data = [ + $data, + ]; + + $data[':triggerGroup'] ??= $group; + $data[':triggerId'] = $id; } + + $this->dispatcher->dispatch($func, ...$data); } if ($this->callbacks[$group]['remove']) {