lithium\net\http\Router::attach()
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
Nameof the scope.
-
mixed
Settingsof the mount point or
nullfor setting only variables to populate. -
array
Variablesto 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);
}
}