Los tipos de rutas Hostname, Scheme y Method se usan menos comúnmente en comparación con los tipos de ruta mencionados anteriormente.
El tipo de ruta Hostname se puede usar, por ejemplo, si desarrollamos un Sistema Gestor de Contenidos (CMS) 7 que serviría varios sitios web al mismo tiempo, cada sitio usa un subdominio diferente. En este caso definiremos la ruta Hostname como padre y dentro de ella rutas hijas de otro tipo:
7) Un Sistema Gestor de Contenidos es un sitio web que permite la creación, edición y publicación de contenido colaborativo (blogs, páginas, documentos, vídeos, etc.) usando una interface web centralizada. Un CMS hace posible que no programadores puedan ejecutar las tareas diarias de un sitio web como publicar contenido.
'routename' => [
'type' => Hostname::class,
'options' => [
'route' => ':subdomain.yourserver.com',
'constraints' => [
'subdomain' => '[a-zA-Z][a-zA-Z0-9_-]*'
],
'defaults' => [
],
],
'child_routes'=>[
//...
],
],
En el ejemplo de arriba, en la línea 1 definimos la ruta que tiene como tipo: Hostname.
La opción route
(línea 4) define el nombre de dominio contra el que se compara.
El :subdomain
es un comodín que puede tomar diferentes valores de subdominio.
La llave constraints
define la expresión regular con la que el parámetro subdominio
debe coincidir. La ruta Hostname diferenciará nuestro dominio y cada sitio se
comportará diferente dependiendo del valor del parámetro subdomain
regresado:
// An example of an action that uses parameters returned by
// Hostname route.
public function someAction()
{
// Get the 'subdomain' parameter from the route.
$subdomain = $this->params()->fromRoute('subdomain', null);
// Use different logic based on sub-domain.
//...
// Render the view template.
return new ViewModel();
}
El tipo de ruta Scheme es útil si necesitamos manejar los protocolos HTTP y HTTPS 8 de maneras diferentes.
8) El protocolo HTTPS se usa generalmente para conexiones seguras como páginas de cuentas bancarias o de carro de compras. Cuando usamos HTTPS los datos de la petición se trasmiten dentro de un canal con Secure Socket Layer (SSS) con y no esta disponible para terceros.
Una configuración típica del tipo de ruta Scheme se presenta abajo:
'routename' => [
'type' => Scheme::class,
'options' => [
'scheme' => 'https',
'defaults' => [
'https' => true,
],
],
'child_routes'=>[
//...
],
],
Arriba definimos la ruta de tipo Scheme. Esta toma la opción scheme
que sería el esquema contra el que se hará la comparación (http
o https
).
Si el esquema en la petición de HTTP es exactamente el mismo que la opción
scheme
, la ruta se considera coincidente. Podemos usar la llave defaults
para
retornar algunos parámetros desde la ruta coincidente. En el ejemplo de arriba,
el parámetro booleano https
se regresará.
El tipo de ruta Method se puede usar si necesitamos dirigir las peticiones GET y POST a diferentes acciones en el controlador. Su configuración típica es la siguiente:
'routename' => [
'type' => Method::class,
'options' => [
'verb' => 'post',
'defaults' => [
],
],
'child_routes'=>[
//...
],
],
Arriba definimos la ruta que tiene como tipo: Method. Esta toma la opción verb
que puede ser una lista separada por comas de acciones HTTP validas (get, post,
put, etc.)