/**
  * redirect( $params )
  * Redirige el flujo de ejecucion de una accion de un controller a una accion del mismo o de otro controller.
  * 
  * @param $params mapa de parametros en la forma nombre=>valor. Un elemento especial es "params", que es a su vez un mapa de parametros para el request que se lanza.
  */
 public function redirect($params)
 {
     $ctx = YuppContext::getInstance();
     if (isset($params['app']) || array_key_exists('app', $params)) {
         // Si no me lo pasan, tengo que poner el actual.
         $app = $params['app'];
     } else {
         $app = $ctx->getApp();
     }
     if (isset($params['controller']) || array_key_exists('controller', $params)) {
         // Si no me lo pasan, tengo que poner el actual.
         $controller = $params['controller'];
     } else {
         $controller = $ctx->getController();
     }
     // FIXME: si no se le pasa action se ejecuta la accion index?? deberia tirar una excepcion si no me pasan la accion??
     $action = $params['action'];
     if (!isset($params['params'])) {
         $params['params'] = array();
     }
     return ViewCommand::execute($app, $controller, $action, $params['params'], $this->flash);
 }