Router::connect PHP Method

connect() public static method

Routes are a way of connecting request URLs to objects in your application. At their core routes are a set of regular expressions that are used to match requests to destinations. Examples: Router::connect('/:controller/:action/*'); The first token ':controller' will be used as a controller name while the second is used as the action name. the '/*' syntax makes this route greedy in that it will match requests like /posts/index as well as requests like /posts/edit/1/foo/bar. Router::connect('/home-page', array('controller' => 'pages', 'action' => 'display', 'home')); The above shows the use of route parameter defaults, and providing routing parameters for a static route. Router::connect( '/:lang/:controller/:action/:id', array(), array('id' => '[0-9]+', 'lang' => '[a-z]{3}') ); Shows connecting a route with custom route parameters as well as providing patterns for those parameters. Patterns for routing parameters do not need capturing groups, as one will be added for each route params. $defaults is merged with the results of parsing the request URL to form the final routing destination and its parameters. This destination is expressed as an associative array by Router. See the output of {@link parse()}. $options offers four 'special' keys. pass, named, persist and routeClass have special meaning in the $options array. - pass is used to define which of the routed parameters should be shifted into the pass array. Adding a parameter to pass will remove it from the regular route array. Ex. 'pass' => array('slug') - persist is used to define which route parameters should be automatically included when generating new URLs. You can override persistent parameters by redefining them in a URL or remove them by setting the parameter to false. Ex. 'persist' => array('lang') - routeClass is used to extend and change how individual routes parse requests and handle reverse routing, via a custom routing class. Ex. 'routeClass' => 'SlugRoute' - named is used to configure named parameters at the route level. This key uses the same options as Router::connectNamed() You can also add additional conditions for matching routes to the $defaults array. The following conditions can be used: - [type] Only match requests for specific content types. - [method] Only match requests with specific HTTP verbs. - [server] Only match when $_SERVER['SERVER_NAME'] matches the given value. Example of using the [method] condition: Router::connect('/tasks', array('controller' => 'tasks', 'action' => 'index', '[method]' => 'GET')); The above route will only be matched for GET requests. POST requests will fail to match this route.
See also: routes
public static connect ( string $route, array $defaults = [], array $options = [] ) : array
$route string A string describing the template of the route
$defaults array An array describing the default route parameters. These parameters will be used by default and can supply routing parameters that are not dynamic. See above.
$options array An array matching the named elements in the route to regular expressions which that element should match. Also contains additional parameters such as which routed parameters should be shifted into the passed arguments, supplying patterns for routing parameters and supplying the name of a custom routing class.
return array Array of routes
    public static function connect($route, $defaults = array(), $options = array())
    {
        static::$initialized = true;
        foreach (static::$_prefixes as $prefix) {
            if (isset($defaults[$prefix])) {
                if ($defaults[$prefix]) {
                    $defaults['prefix'] = $prefix;
                } else {
                    unset($defaults[$prefix]);
                }
                break;
            }
        }
        if (isset($defaults['prefix']) && !in_array($defaults['prefix'], static::$_prefixes)) {
            static::$_prefixes[] = $defaults['prefix'];
        }
        $defaults += array('plugin' => null);
        if (empty($options['action'])) {
            $defaults += array('action' => 'index');
        }
        $routeClass = static::$_routeClass;
        if (isset($options['routeClass'])) {
            if (strpos($options['routeClass'], '.') === false) {
                $routeClass = $options['routeClass'];
            } else {
                list(, $routeClass) = pluginSplit($options['routeClass'], true);
            }
            $routeClass = static::_validateRouteClass($routeClass);
            unset($options['routeClass']);
        }
        if ($routeClass === 'RedirectRoute' && isset($defaults['redirect'])) {
            $defaults = $defaults['redirect'];
        }
        static::$routes[] = new $routeClass($route, $defaults, $options);
        return static::$routes;
    }

Usage Example

Example #1
0
 /**
  * Conecta una nueva ruta interpretada al enrutador
  *
  *
  * @param string $route
  * @param array $defaults
  * @param array $options
  */
 function connect($route, $defaults = array(), $options = array())
 {
     $self = I18nRouter::getInstance();
     $route = $self->interpretUrl($route);
     //pr($route);
     Router::connect($route, $defaults, $options);
 }
All Usage Examples Of Router::connect