listeners[] = $events->attach(MvcEvent::EVENT_DISPATCH, [$this, 'injectParams'], 90); } /** * Take parameters from RouteMatch and inject them into the request. * * @param MvcEvent $e * @return void */ public function injectParams(MvcEvent $e) { $routeMatchParams = $e->getRouteMatch()->getParams(); $request = $e->getRequest(); /** @var $params \Zend\Stdlib\Parameters */ if ($request instanceof ConsoleRequest) { $params = $request->params(); } elseif ($request instanceof HttpRequest) { $params = $request->get(); } else { // unsupported request type return; } if ($this->overwrite) { foreach ($routeMatchParams as $key => $val) { $params->$key = $val; } } else { foreach ($routeMatchParams as $key => $val) { if (!$params->offsetExists($key)) { $params->$key = $val; } } } } /** * Should RouteMatch parameters replace existing Request params? * * @param bool $overwrite */ public function setOverwrite($overwrite) { $this->overwrite = $overwrite; } /** * @return bool */ public function getOverwrite() { return $this->overwrite; } }