public function testDispatchDelegates() { $event = new Event(); $this->innerDispatcher->expects($this->once()) ->method('dispatch') ->with('event', $event) ->will($this->returnValue('result')); $this->assertSame('result', $this->dispatcher->dispatch('event', $event)); }
/** * @param string $eventName * @param Event|null $event * @return Event|null */ public function dispatch($eventName, Event $event = null) { parent::dispatch($eventName, $event); if ($event instanceof FormAwareInterface) { parent::dispatch($eventName . '.' . $event->getForm()->getName(), $event); } return $event; }
/** * @param string $eventName * @param GridEventInterface|GridConfigurationEventInterface|Event $event * * @return Event * @throws InvalidArgumentException */ public function dispatch($eventName, Event $event = null) { /** @var DatagridConfiguration $config */ if ($event instanceof GridEventInterface) { $config = $event->getDatagrid()->getConfig(); } elseif ($event instanceof GridConfigurationEventInterface) { $config = $event->getConfig(); } else { throw new InvalidArgumentException('Unexpected event type. Expected instance of GridEventInterface or GridConfigurationEventInterface'); } // get all parents $invokedGrids = $config->offsetGetOr(SystemAwareResolver::KEY_EXTENDED_FROM, []); $invokedGrids[] = $config->getName(); parent::dispatch($eventName, $event); /* * Dispatch named events in reverse order from parent to child * e.g. parent1 -> parent2 -> target grid */ foreach ($invokedGrids as $grid) { parent::dispatch($eventName . '.' . $grid, $event); } return $event; }