protected function route(Router $router, $uri, array $extraVariables = []) { $router->route($uri); $theRule =& $router->getTheRule(); $theRule[$router::RULE_VARIABLES]['test'] = $this; foreach ($extraVariables as $name => $value) { $theRule[$router::RULE_VARIABLES][$name] = $value; } return $router; }
/** * Dispatch a router rule. * * @param \Hoa\Router $router Router. * @param \Hoa\View\Viewable $view View. * @return mixed * @throws \Hoa\Controller\Exception */ public function dispatch(Router $router, View\Viewable $view = null) { $rule = $router->getTheRule(); if (null === $rule) { $router->route(); $rule = $router->getTheRule(); } if (null === $view) { $view = $this->_currentView; } else { $this->_currentView = $view; } $parameters = $this->_parameters; $this->_parameters = clone $this->_parameters; foreach ($rule[Router::RULE_VARIABLES] as $key => $value) { $this->_parameters->setParameter('variables.' . $key, $value); } $out = $this->resolve($rule, $router, $view); unset($this->_parameters); $this->_parameters = $parameters; return $out; }