lithium\net\http\Router::attach()

public static method

Defines a scope and attaches it to a mount point.

Example 1:

Router::attach('app', [
    'absolute' => true,
    'host' => 'localhost',
    'scheme' => 'http://',
    'prefix' => 'web/tests'
]);

Example 2:

Router::attach('app', [
    'absolute' => true,
    'host' => '{:subdomain:[a-z]+}.{:hostname}.{:tld}',
    'scheme' => '{:scheme:https://}',
    'prefix' => ''
]);

Attach the variables to populate for the app scope.

Router::attach('app', null, [
    'subdomain' => 'www',
    'hostname' => 'li3',
    'tld' => 'me'
]);

By default all routes attached to an 'app' scope are attached to a library of the same name (i.e. the 'app' library in this case). So you don't need to deal with an extra library in your routes definition when you are using scopes.

Moreover you can override the attached library name with:

Router::attach('app', [
    'library' => 'custom_library_name'
]);

Parameters

  • string Name

    of the scope.

  • mixed Settings

    of the mount point or null for setting only variables to populate.

  • array Variables

    to populate for the scope.

Source

	public static function attach($name, $config = null, array $vars = []) {
		if ($name === false) {
			return null;
		}

		if (!isset(static::$_scopes)) {
			static::_initScopes();
		}

		if ($config === null) {
			if ($vars && ($config = static::$_scopes->get($name))) {
				$config['values'] = $vars;
				static::$_scopes->set($name, $config);
			}
			return;
		}

		if (is_array($config) || $config === false) {
			static::$_scopes->set($name, $config);
		}
	}