A free and open-source book on ZF3 for beginners

Translation into this language is not yet finished. You can help this project by translating the chapters and contributing your changes.

5.8. Otros Tipos de Ruta

Los tipos de rutas Hostname, Scheme y Method se usan menos comúnmente en comparación con los tipos de ruta mencionados anteriormente.

5.8.1. Hostname

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

5.8.2. Scheme

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á.

5.8.3. Method

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.)


Top