/**
  * Call controller's action with parameters
  *
  * @param Object $controller
  * @param IRoute $route
  * @return mixed
  */
 public function invoke($controller, IRoute $route)
 {
     $action = $this->naming->getName($route->getAction());
     $method = $this->getActionMethod($controller, $action);
     $arguments = $this->findArguments($method, $route->getParameters());
     return $method->invokeArgs($controller, $arguments);
 }
Beispiel #2
0
 /**
  * @param IRoute $route
  *
  * @return bool
  */
 public function resolveRouteParameters(IRoute $route)
 {
     $parameters = $route->getParameters();
     $resolvers = $this->getResolvers();
     $invoker = $this->getParameterResolverInvoker();
     foreach ($parameters as $name => $parameter) {
         $resolver = array_get($resolvers, $name);
         if ($resolver instanceof IRouteResolver) {
             $value = $invoker->invoke($resolver->getResolver(), $parameter);
             if ($value === null) {
                 return false;
             }
             $parameters[$name] = $value;
         }
     }
     $route->setParameters($parameters);
     return true;
 }