Methods summary
public
string|string[]
|
#
GetDefaultLocalization( boolean $asString = FALSE )
Get default language and locale. Language is always defined as two lower case
characters - international language code and locale is always defined as
two or three upper case characters or digits - international locale code.
Default localization is used in cases, when is not possible to detect
language and locale from URL or when is not possible to detect language
and locale from Accept-Language http header or not possible to get
previous localization from session.
Get default language and locale. Language is always defined as two lower case
characters - international language code and locale is always defined as
two or three upper case characters or digits - international locale code.
Default localization is used in cases, when is not possible to detect
language and locale from URL or when is not possible to detect language
and locale from Accept-Language http header or not possible to get
previous localization from session.
Parameters
- $asString
FALSE by default to get array with lang and locale,
TRUE to get lang and locale as string.
Returns
string|string[]
|
public
MvcCore\Ext\Routers\Localization
|
#
SetDefaultLocalization( $defaultLocalizationOrLanguage, $defaultLocale = NULL )
Set default language and locale. Language has to be defined as two lower case
characters - international language code and locale has to be defined as
two or three upper case characters or digits - international locale code.
Default localization is used in cases, when is not possible to detect
language and locale from URL or when is not possible to detect language
and locale from Accept-Language http header or not possible to get
previous localization from session.
Set default language and locale. Language has to be defined as two lower case
characters - international language code and locale has to be defined as
two or three upper case characters or digits - international locale code.
Default localization is used in cases, when is not possible to detect
language and locale from URL or when is not possible to detect language
and locale from Accept-Language http header or not possible to get
previous localization from session.
Returns
Var
string $defaultLocalizationOrLanguage It could be en or en-US , en-GB ...
string $defaultLocale It could be US , GB ...
|
public
string|string[]
|
#
GetLocalization( boolean $asString = FALSE )
Get current router context localization value. It could contain in first
index international language code string and nothing more or the language
under first index and international locale code under second index.
If there are no language and locale detected, returned array is empty.
Get current router context localization value. It could contain in first
index international language code string and nothing more or the language
under first index and international locale code under second index.
If there are no language and locale detected, returned array is empty.
Parameters
- $asString
FALSE by default to get array with lang and locale,
TRUE to get lang and locale as string.
Returns
string|string[]
|
public
MvcCore\Ext\Routers\Localization
|
#
SetLocalization( string $lang, string $locale = NULL )
Set current router context localization value. It could contain in first
index international language code string and nothing more or the language
under first index and international locale code under second index.
Set current router context localization value. It could contain in first
index international language code string and nothing more or the language
under first index and international locale code under second index.
Parameters
Returns
Throws
InvalidArgumentException Localization must be defined at least by the language.
|
public
boolean
|
#
GetRedirectFirstRequestToDefault( )
If TRUE , redirect first request by session to default localization
version if localization in request is not allowed.
If not configured, FALSE by default to not redirect in first request to
default localization version but to route requested localization version.
If TRUE , redirect first request by session to default localization
version if localization in request is not allowed.
If not configured, FALSE by default to not redirect in first request to
default localization version but to route requested localization version.
Returns
boolean
|
public
MvcCore\Ext\Routers\Localization
|
#
SetRedirectFirstRequestToDefault( boolean $redirectFirstRequestToDefault = TRUE )
If TRUE , redirect first request by session to default localization
version if localization in request is not allowed.
If not configured, FALSE by default to not redirect in first request to
default localization version but to route requested localization version.
If TRUE , redirect first request by session to default localization
version if localization in request is not allowed.
If not configured, FALSE by default to not redirect in first request to
default localization version but to route requested localization version.
Parameters
- $redirectFirstRequestToDefault
Returns
|
public
boolean
|
#
GetAllowNonLocalizedRoutes( )
TRUE by default to allow routing with non-localized routes.
If FALSE non-localized routes are ignored and there is thrown an
exception in development environment.
TRUE by default to allow routing with non-localized routes.
If FALSE non-localized routes are ignored and there is thrown an
exception in development environment.
Returns
boolean
|
public
MvcCore\Ext\Routers\Localization
|
#
SetAllowNonLocalizedRoutes( boolean $allowNonLocalizedRoutes = TRUE )
TRUE by default to allow routing with non-localized routes.
If FALSE non-localized routes are ignored and there is thrown an
exception in development environment.
TRUE by default to allow routing with non-localized routes.
If FALSE non-localized routes are ignored and there is thrown an
exception in development environment.
Parameters
Returns
|
public
boolean
|
#
GetDetectLocalizationOnlyByLang( )
Get detect localization only by language record from Accept-Language http
header record, not together with locale code. Parsed international
language code will be enough to choose final target application
localization. It will be chosen first localization in allowed list with
detected language. TRUE by default. If FALSE , then there is necessary
to send into application in Accept-Language http header international
language code together with international locale code with the only same
combination which application has configured in allowed localizations only.
Get detect localization only by language record from Accept-Language http
header record, not together with locale code. Parsed international
language code will be enough to choose final target application
localization. It will be chosen first localization in allowed list with
detected language. TRUE by default. If FALSE , then there is necessary
to send into application in Accept-Language http header international
language code together with international locale code with the only same
combination which application has configured in allowed localizations only.
Returns
boolean
|
public
MvcCore\Ext\Routers\Localization
|
#
SetDetectLocalizationOnlyByLang( boolean $detectLocalizationOnlyByLang = TRUE )
Set detect localization only by language from Accept-Language http
header record, not together with locale code. Parsed international
language code will be enough to choose final target application
localization. It will be chosen first localization in allowed list with
detected language. TRUE by default. If FALSE , then there is necessary
to send into application in Accept-Language http header international
language code together with international locale code with the only same
combination which application has configured in allowed localizations only.
Set detect localization only by language from Accept-Language http
header record, not together with locale code. Parsed international
language code will be enough to choose final target application
localization. It will be chosen first localization in allowed list with
detected language. TRUE by default. If FALSE , then there is necessary
to send into application in Accept-Language http header international
language code together with international locale code with the only same
combination which application has configured in allowed localizations only.
Parameters
- $detectLocalizationOnlyByLang
Returns
|
public
array
|
#
GetAllowedLocalizations( )
Get list of allowed localization strings in your application, default
localization will be allowed automatically. List is returned as array of
strings. Every item has to be international language code or it has to be
international language code and international locale code separated by
dash.
Get list of allowed localization strings in your application, default
localization will be allowed automatically. List is returned as array of
strings. Every item has to be international language code or it has to be
international language code and international locale code separated by
dash.
Returns
array
|
public
MvcCore\Ext\Routers\Localization
|
#
SetAllowedLocalizations( $allowedLocalizations )
Set list of allowed localization strings in your application, default
localization will be allowed automatically. List has to be defined as array
of strings. Every item has to be international language code or it has to be
international language code and international locale code separated by
dash. All previously defined allowed localizations will be replaced.
Default localization is always allowed automatically.
Set list of allowed localization strings in your application, default
localization will be allowed automatically. List has to be defined as array
of strings. Every item has to be international language code or it has to be
international language code and international locale code separated by
dash. All previously defined allowed localizations will be replaced.
Default localization is always allowed automatically.
Returns
Var
string $allowedLocalizations..., International lower case language
code(s) (+ optionally dash character
+ upper case international locale
code(s)).
|
public
MvcCore\Ext\Routers\Localization
|
#
AddAllowedLocalizations( $allowedLocalizations )
Add list of allowed localization strings in your application, default
localization will be allowed automatically. List has to be defined as array
of strings. Every item has to be international language code or it has to be
international language code and international locale code separated by
dash.
Default localization is always allowed automatically.
Add list of allowed localization strings in your application, default
localization will be allowed automatically. List has to be defined as array
of strings. Every item has to be international language code or it has to be
international language code and international locale code separated by
dash.
Default localization is always allowed automatically.
Returns
Var
string $allowedLocalizations..., International lower case language
code(s) (+ optionally dash character
+ upper case international locale
code(s)).
|
public
array
&
|
#
GetLocalizationEquivalents( )
Get list of localization equivalents used in localization detection by http
header Accept-Language parsed in first request. It could be used for
language very similar countries like Ukraine & Russia, Czech & Slovakia ...
Keys in this array is target localization, value is an array with target
localization equivalents.
Get list of localization equivalents used in localization detection by http
header Accept-Language parsed in first request. It could be used for
language very similar countries like Ukraine & Russia, Czech & Slovakia ...
Keys in this array is target localization, value is an array with target
localization equivalents.
Returns
array
|
public
MvcCore\Ext\Routers\Localization
|
#
SetLocalizationEquivalents( array $localizationEquivalents = [] )
Set list of localization equivalents used in localization detection by http
header Accept-Language parsed in first request. It could be used for
language very similar countries like Ukraine & Russia, Czech & Slovakia ...
Keys in this array is target localization, value is an array with target
localization equivalents. All previously configured localization equivalents
will be replaced with given configuration.
Set list of localization equivalents used in localization detection by http
header Accept-Language parsed in first request. It could be used for
language very similar countries like Ukraine & Russia, Czech & Slovakia ...
Keys in this array is target localization, value is an array with target
localization equivalents. All previously configured localization equivalents
will be replaced with given configuration.
Parameters
- $localizationEquivalents
Keys in this array is target
localization, value is an array
with target localization equivalents.
Returns
|
public
MvcCore\Ext\Routers\Localization
|
#
AddLocalizationEquivalents( array $localizationEquivalents = [] )
Add or merge items in list with localization equivalents used in localization
detection by http header Accept-Language parsed in first request. It could
be used for language very similar countries like Ukraine & Russia, Czech & Slovakia ...
Keys in this array is target localization, value is an array with target
localization equivalents. All previously configured localization equivalents
will be merged with given configuration.
Add or merge items in list with localization equivalents used in localization
detection by http header Accept-Language parsed in first request. It could
be used for language very similar countries like Ukraine & Russia, Czech & Slovakia ...
Keys in this array is target localization, value is an array with target
localization equivalents. All previously configured localization equivalents
will be merged with given configuration.
Parameters
- $localizationEquivalents
Keys in this array is target
localization, value is an array
with target localization equivalents.
Returns
|
public
boolean
|
#
GetRouteRecordsByLanguageAndLocale( )
If TRUE (default FALSE ), route records like pattern , match ,
reverse or defaults has to be defined by international language code
and international locale code, not only by language code by default.
This option is very rare, if different locales have different naming
for URL strings.
If TRUE (default FALSE ), route records like pattern , match ,
reverse or defaults has to be defined by international language code
and international locale code, not only by language code by default.
This option is very rare, if different locales have different naming
for URL strings.
Returns
boolean
|
public
MvcCore\Ext\Routers\Localization
|
#
SetRouteRecordsByLanguageAndLocale( boolean $routeRecordsByLanguageAndLocale = TRUE )
If TRUE (default FALSE ), route records like pattern , match ,
reverse or defaults has to be defined by international language code
and international locale code, not only by language code by default.
This option is very rare, if different locales have different naming
for URL strings.
If TRUE (default FALSE ), route records like pattern , match ,
reverse or defaults has to be defined by international language code
and international locale code, not only by language code by default.
This option is very rare, if different locales have different naming
for URL strings.
Parameters
- $routeRecordsByLanguageAndLocale
Returns
|
public
MvcCore\Ext\Routers\Localization
|
#
AddRoutes( array $routes = [], string|array|null $groupNames = NULL, boolean $prepend = FALSE, boolean $throwExceptionForDuplication = TRUE )
Append or prepend new request routes.
If there is no name configured in route array configuration,
set route name by given $routes array key, if key is not numeric.
Append or prepend new request routes.
If there is no name configured in route array configuration,
set route name by given $routes array key, if key is not numeric.
Routes could be defined in various forms:
Example:
\MvcCore\Router::GetInstance()->AddRoutes([ "Products:List" => "/products-list/<name>/<color>",
], "eshop");
or:
\MvcCore\Router::GetInstance()->AddRoutes([ 'products_list' => [ "pattern" => [ "en" => "/products-list/<name>/<color>", "de" => "/produkt-liste/<name>/<color>" ], "controllerAction" => "Products:List", "defaults" => ["name" => "default-name", "color" => "red"], "constraints" => ["name" => "[^/]*", "color" => "[a-z]*"] ]
], ["en" => "eshop", "de" => "einkaufen"]);
or:
\MvcCore\Router::GetInstance()->AddRoutes([ new Route( "/products-list/<name>/<color>", "Products:List", ["name" => "default-name", "color" => "red"], ["name" => "[^/]*", "color" => "[a-z]*"] )
]);
or:
\MvcCore\Router::GetInstance()->AddRoutes([ new Route( "name" => "products_list", "pattern" => "#^/products\-list/(?<name>[^/]*)/(?<color>[a-z]*)(?=/$|$)#", "reverse" => "/products-list/<name>/<color>", "controller" => "Products", "action" => "List", "defaults" => ["name" => "default-name", "color" => "red"], )
]);
Parameters
- $routes
Keyed array with routes, keys are route names or route
Controller::Action definitions.
- $groupNames
Group name or names is first matched/parsed word(s) in
requested path to group routes by to try to match only routes
you really need, not all of them. If NULL by default, routes
are inserted into default group. If argument is an array, it
must contain localization keys and localized group names.
- $prepend
Optional, if TRUE , all given routes will be prepended from
the last to the first in given list, not appended.
- $throwExceptionForDuplication
TRUE by default. Throw an exception, if route name or
route Controller:Action has been defined already. If
FALSE old route is overwritten by new one.
Returns
|
protected
|
#
addRouteToGroup( MvcCore\IRoute $route, string $routeName, string|string[]|null $groupNames, boolean $prepend )
Add route instance into named routes group. Every routes group is chosen
in routing moment by first parsed word from requested URL.
Add route instance into named routes group. Every routes group is chosen
in routing moment by first parsed word from requested URL.
Parameters
- $route
- Localized route instance.
- $routeName
- A route instance name.
- $groupNames
- Group name or list of group names to assign given route instance into.
- $prepend
- If
TRUE , prepend route instance in final group or not.
Throws
InvalidArgumentException Localized routes group cannot contain non-localized route instance.
|
public
MvcCore\Ext\Routers\Localization
|
#
SetRoutes( MvcCore\Route[] |MvcCore\Ext\Routers\Localizations\Route[] |array $routes = [], string|array|null $groupNames = NULL, boolean $autoInitialize = TRUE )
Clear all possible previously configured routes
and set new given request routes again.
If there is no name configured in route array configuration,
set route name by given $routes array key, if key is not numeric.
Clear all possible previously configured routes
and set new given request routes again.
If there is no name configured in route array configuration,
set route name by given $routes array key, if key is not numeric.
Routes could be defined in various forms:
Example:
\MvcCore\Router::GetInstance()->SetRoutes([ "Products:List" => "/products-list/<name>/<color>",
], "eshop");
or:
\MvcCore\Router::GetInstance()->SetRoutes([ 'products_list' => [ "pattern" => [ "en" => "/products-list/<name>/<color>", "de" => "/produkt-liste/<name>/<color>" ], "controllerAction" => "Products:List", "defaults" => ["name" => "default-name", "color" => "red"], "constraints" => ["name" => "[^/]*", "color" => "[a-z]*"] ]
], ["en" => "eshop", "de" => "einkaufen"]);
or:
\MvcCore\Router::GetInstance()->SetRoutes([ new Route( "/products-list/<name>/<color>", "Products:List", ["name" => "default-name", "color" => "red"], ["name" => "[^/]*", "color" => "[a-z]*"] )
]);
or:
\MvcCore\Router::GetInstance()->SetRoutes([ new Route( "name" => "products_list", "pattern" => "#^/products\-list/(?<name>[^/]*)/(?<color>[a-z]*)(?=/$|$)#", "reverse" => "/products-list/<name>/<color>", "controller" => "Products", "action" => "List", "defaults" => ["name" => "default-name", "color" => "red"], )
]);
Parameters
- $routes
Keyed array with routes, keys are route names or route
Controller::Action definitions.
- $groupNames
Group name or names is first matched/parsed word(s) in
requested path to group routes by to try to match only routes
you really need, not all of them. If NULL by default, routes
are inserted into default group. If argument is an array, it
must contain localization keys and localized group names.
- $autoInitialize
If TRUE , locale routes array is cleaned and then all
routes (or configuration arrays) are sent into method
$router->AddRoutes(); , where are routes auto initialized
for missing route names or route controller or route action
records, completed always from array keys. You can you
FALSE to set routes without any change or auto-init, it
could be useful to restore cached routes etc.
Returns
|
protected
|
#
removeRouteFromGroup( MvcCore\IRoute $route, string $routeName )
Unset route from defined group. This method doesn't unset the route
from router object to not be possible to create URL by given route anymore.
This does route method: \MvcCore\Route::RemoveRoute($routeName); .
Unset route from defined group. This method doesn't unset the route
from router object to not be possible to create URL by given route anymore.
This does route method: \MvcCore\Route::RemoveRoute($routeName); .
Parameters
|
protected
boolean
|
#
isRouteCfgDataLocalized( array & $routeCfgData = [] )
Detect and return TRUE if even one route configuration data are localized
(return TRUE if one of pattern , match or reverse is an array).
Detect and return TRUE if even one route configuration data are localized
(return TRUE if one of pattern , match or reverse is an array).
Parameters
Returns
boolean
|
protected
MvcCore\Route
|
#
getRouteInstance( MvcCore\Route |array & $routeCfgOrRoute )
Get always route instance from given route configuration data or instance
and return created instance from given configuration data or already given
instance.
Get always route instance from given route configuration data or instance
and return created instance from given configuration data or already given
instance.
Parameters
- $routeCfgOrRoute
Route instance or
route config array.
Returns
|
protected
string|null
|
#
redirectLocalizationGetUrlValueAndUnsetGet( string[] $targetLocalization )
Return localization string value for redirection URL but if localization
is defined by GET query string param, return NULL and set target
localization string into GET params to complete query string params
into redirect URL later. But if the target localization string is the same
as default localization, unset this param from GET params array return
NULL in query string localization definition case.
Return localization string value for redirection URL but if localization
is defined by GET query string param, return NULL and set target
localization string into GET params to complete query string params
into redirect URL later. But if the target localization string is the same
as default localization, unset this param from GET params array return
NULL in query string localization definition case.
Parameters
- $targetLocalization
Localization array, it could have one
or two elements - lang and locale string.
Returns
string|null
|
Properties summary
protected
string[]
|
$defaultLocalization
Default language and locale. Language is always defined as two lower case
characters - international language code and locale is always defined as
two or three upper case characters or digits - international locale code.
Default localization is used in cases, when is not possible to detect
language and locale from URL or when is not possible to detect language
and locale from Accept-Language http header or not possible to get
previous localization from session.
Default language and locale. Language is always defined as two lower case
characters - international language code and locale is always defined as
two or three upper case characters or digits - international locale code.
Default localization is used in cases, when is not possible to detect
language and locale from URL or when is not possible to detect language
and locale from Accept-Language http header or not possible to get
previous localization from session.
|
|
protected
string[]
|
$localization
Current router context localization value. It could contain in first index
international language code string and nothing more or the language under
first index and international locale code under second index.
If there are no language and locale detected, array is empty.
Current router context localization value. It could contain in first index
international language code string and nothing more or the language under
first index and international locale code under second index.
If there are no language and locale detected, array is empty.
|
|
protected
boolean
|
$redirectFirstRequestToDefault
If TRUE , redirect first request by session to default localization
version if localization in request is not allowed.
If not configured, FALSE by default to not redirect in first request to
default localization version but to route requested localization version.
If TRUE , redirect first request by session to default localization
version if localization in request is not allowed.
If not configured, FALSE by default to not redirect in first request to
default localization version but to route requested localization version.
|
|
protected
boolean
|
$allowNonLocalizedRoutes
TRUE by default to allow routing with non-localized routes.
If FALSE non-localized routes are ignored and there is thrown an
exception in development environment.
TRUE by default to allow routing with non-localized routes.
If FALSE non-localized routes are ignored and there is thrown an
exception in development environment.
|
|
protected
boolean
|
$detectLocalizationOnlyByLang
Detect localization only by language record from Accept-Language http
header record, not together with locale code. Parsed international
language code will be enough to choose final target application
localization. It will be chosen first localization in allowed list with
detected language. TRUE by default. If FALSE , then there is necessary
to send into application in Accept-Language http header international
language code together with international locale code with the only same
combination which application has configured in allowed localizations only.
Detect localization only by language record from Accept-Language http
header record, not together with locale code. Parsed international
language code will be enough to choose final target application
localization. It will be chosen first localization in allowed list with
detected language. TRUE by default. If FALSE , then there is necessary
to send into application in Accept-Language http header international
language code together with international locale code with the only same
combination which application has configured in allowed localizations only.
|
|
protected
array
|
$allowedLocalizations
List of allowed localization strings in your application, default
localization will be allowed automatically. Define this list as array of
strings. Every item has to be international language code or it has to be
international language code and international locale code separated by
dash.
List of allowed localization strings in your application, default
localization will be allowed automatically. Define this list as array of
strings. Every item has to be international language code or it has to be
international language code and international locale code separated by
dash.
|
|
protected
array
|
$localizationEquivalents
List of localization equivalents used in localization detection by http
header Accept-Language parsed in first request. It could be used for
language very similar countries like Ukraine & Russia, Czech & Slovakia ...
Keys in this array is target localization, value is an array with target
localization equivalents.
List of localization equivalents used in localization detection by http
header Accept-Language parsed in first request. It could be used for
language very similar countries like Ukraine & Russia, Czech & Slovakia ...
Keys in this array is target localization, value is an array with target
localization equivalents.
|
|
protected
boolean
|
$routeRecordsByLanguageAndLocale
If TRUE (default FALSE ), route records like pattern , match ,
reverse or defaults has to be defined by international language code
and international locale code, not only by language code by default.
This option is very rare, if different locales have different naming
for URL strings.
If TRUE (default FALSE ), route records like pattern , match ,
reverse or defaults has to be defined by international language code
and international locale code, not only by language code by default.
This option is very rare, if different locales have different naming
for URL strings.
|
|
protected static
string
|
$routeClassLocalized
Localized route class name, never patched in application core,
only used internally in this class.
Localized route class name, never patched in application core,
only used internally in this class.
|
#
'\MvcCore\Ext\Routers\Localizations\Route'
|
protected
string[]|null
|
$sessionLocalization
Localization founded in session, parsed from previous requests.
Localization founded in session, parsed from previous requests.
|
|
protected
string[]|null
|
$requestLocalization
Localization founded in request.
Localization founded in request.
|
|
protected
string[]|null
|
$requestLocalizationEquivalent
Localization equivalent founded in request.
Localization equivalent founded in request.
|
|
protected
string
|
$switchUriParamLocalization
Localization value in specially named $_GET param (if founded)
for strict session mode localization switching.
Localization value in specially named $_GET param (if founded)
for strict session mode localization switching.
|
|
protected
boolean|null
|
$firstRequestLocalizationDetection
If NULL , request wasn't first, there was something in session stored by previous requests.
If TRUE or FALSE , request is first, nothing is in session yet and TRUE means
the best localization match by sent http headers (Accept-Language ).
FALSE then means that there was a match, but it could be a lower prioritized
language and locale from Accept-Language or it could be default application localization.
If NULL , request wasn't first, there was something in session stored by previous requests.
If TRUE or FALSE , request is first, nothing is in session yet and TRUE means
the best localization match by sent http headers (Accept-Language ).
FALSE then means that there was a match, but it could be a lower prioritized
language and locale from Accept-Language or it could be default application localization.
|
|
protected
string|null
|
$defaultLocalizationStr
Default localization, imploded from array to string.
Default localization, imploded from array to string.
|
|
protected
string|null
|
$originalRequestPath
Original request path before localization manipulation.
Original request path before localization manipulation.
|
|