ZF2: obtener parámetros de URL en el controlador

1 minuto de lectura

avatar de usuario
koenHuybrechts

Experimenté Zend Framework 1 y construí algunas aplicaciones con ese marco.

Ahora, estoy experimentando con Zend Framework 2, pero estoy atascado en los parámetros de URL. He configurado mi enrutamiento de esta manera:

// Setup for router and routes
'Zend\Mvc\Router\RouteStack' => array(
    'parameters' => array(
        'routes' => array(
            'default' => array(
                'type'    => 'Zend\Mvc\Router\Http\Segment',
                'options' => array(
                    'route'    => '/[:slug]',
                    'constraints' => array(
                    'slug' => '[a-zA-Z][a-zA-Z0-9_\/-]*'
                    ),
                'defaults' => array(
                    'controller' => 'Htmlsite\Controller\BootController',
                    'action'     => 'index',
                    'slug' => 'home'
                    ),
                ),
            ),
        'home' => array(
            'type' => 'Zend\Mvc\Router\Http\Literal',
            'options' => array(
                'route'    => "https://stackoverflow.com/",
                'defaults' => array(
                    'controller' => 'Htmlsite\Controller\BootController',
                    'action'     => 'index',
                    ),
                ),
            ),
        ),
    ),
),

Como puede ver, he intentado hacer un slug variable. ¿Cómo puedo acceder a esta variable?

  • Para fines de archivo: respuesta muy completa aquí stackoverflow.com/questions/12077126/…

    – leticia

    25 de junio de 2013 a las 15:03

O simplemente:

$slug= $this->params('slug');

¿Por qué no este?

$this->params()->fromRoute('slug');

  • Este es el método preferido ahora.

    – Diemuzi

    15 de julio de 2013 a las 21:28

De aquí:

$slug = $this->getEvent()->getRouteMatch()->getParam('slug');

Más documentación aquípero parece un poco incompleto.

  • ¡Gracias! Justo lo que necesitaba 🙂

    – koenHuybrechts

    5 de abril de 2012 a las 8:41

simplemente puedes usar esto también

$this->params()->fromQuery('slug',null);
$this->params()->fromPost('slug',null);

Espero que funcione…

¿Ha sido útil esta solución?