original_string: public static function action( $action = '', $params = array(), $retain = false ) 
  	{
  		if ( $action == 'index' )
  		{
  			$action = '';
  		}
  
  		if ( CCRequest::current() && ( $route = CCRequest::current()->route ) )
  		{
  			$uri = $route->uri;
  			
  			if ( !is_null( $route->action ) )
  			{
  				$uri =  substr( $uri, 0, strlen( $route->action ) * -1 );
  			}
  
  			if ( substr( $uri, -1 ) != '/' )
  			{
  				$uri .= '/';
  			}
  
  			return static::to( $uri.$action, $params, $retain );
  		}
  
  		throw new CCException( 'CCUrl::action - There has been no route executed yet.' );	
  	}
code: public static function action( $action = '', $params = array(), $retain = false ) 
  	{
  		if ( $action == 'index' )
  		{
  			$action = '';
  		}
  
  		if ( CCRequest::current() && ( $route = CCRequest::current()->route ) )
  		{
  			$uri = $route->uri;
  			
  			if ( !is_null( $route->action ) )
  			{
  				$uri =  substr( $uri, 0, strlen( $route->action ) * -1 );
  			}
  
  			if ( substr( $uri, -1 ) != '/' )
  			{
  				$uri .= '/';
  			}
  
  			return static::to( $uri.$action, $params, $retain );
  		}
  
  		throw new CCException( 'CCUrl::action - There has been no route executed yet.' );	
  	}
code_tokens: public static function action ( $ action = '' , $ params = array ( ) , $ retain = false ) { if ( $ action == 'index' ) { $ action = '' ; } if ( CCRequest :: current ( ) && ( $ route = CCRequest :: current ( ) -> route ) ) { $ uri = $ route -> uri ; if ( ! is_null ( $ route -> action ) ) { $ uri = substr ( $ uri , 0 , strlen ( $ route -> action ) * - 1 ) ; } if ( substr ( $ uri , - 1 ) != '/' ) { $ uri .= '/' ; } return static :: to ( $ uri . $ action , $ params , $ retain ) ; } throw new CCException ( 'CCUrl::action - There has been no route executed yet.' ) ; }
docstring: Get the url to a action of the current route
  
  !Important it's not possible to link between action on multiple routes
  This method always assumes that all actions are in the same route.
  If you want to link to another route using an alias you could do something like:
  
  CCUrl::to( '@myalias/myaction' );
  
  @param string 	$action
  @param array  	$params
  @param bool		$retain		Should we keep the get parameters?
  @return string
docstring_tokens: Get the url to a action of the current route