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
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);
}
}