Rutas y pasar valores por URL en Zend Framework 2

Vamos a ver como crear rutas y pasar valores por URL en Zend Framework 2.

Así se crean nuevas rutas, definiendo un array como este dentro del array ‘routes’ del module.config.php del módulo. En el le indicamos que tipo de ruta es normalmente “Segment” y podemos definir una ruta fija o que sea variable en función del método action incluso del nombre del módulo y controlador. También le indicamos mediante una expresión regular que caracteres se permiten en la url. En “defaults” a que controlador pertenece esta ruta y que método action saltará por defecto.
rutas y pasar valores por url en zend framework 2

Para pasar valores por la url sin utilizar $_GET, hay que configurar los segmentos de url.
Añadimos un id a la ruta que tengamos definida en module.config.php

Esto lo podemos hacer en rutas hijas y en rutas normales.
rutas y pasar valores por url en zend framework 2 segment

Se puede llamar id o como se quiera.

Podemos añadir tantos segmentos opcionales como queramos separándoles por corchetes tal que así:

'route'    => '/[:controller[/:action][/:id][/:id2][/:id3]]',

También podemos añadir segmentos obligatorios de esta forma:

'route'    => '/[:controller[/:action][/:id/:id2/:id3]]',

En el array de constraints podemos validar con una expresión regular cada uno de los parámetros que le pasemos por la url.

'id' => '[0-9]*', 
'id2' => '[a-z]*', 
'id3' => '[1-5a-z]*', 

El controlador:

<?php
namespace Application\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class PruebasController extends AbstractActionController{
    
    public function indexAction(){
        return new ViewModel();
    }
    
    public function verProductoAction(){
		//Recogemos el valor de la ruta
        $id=$this->params()->fromRoute("id",null);
        /*
		*Le podemos indicar el tipo de dato que va a ser
		*$id=(int)$this->params()->fromRoute("id",null);
        */
		
        $nombre="Producto número: ".$id;
        return new ViewModel(
                array("nombre"=>$nombre)
                );
    }
    
}

Y lo imprimimos en la vista

<h1><?php echo $this->nombre ?></h1>

rutas y pasar valores por url en zend framework 2 valor url

Más información:
Documentación oficial de Zend Framework 2

Victor

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post

2 Comentarios

  1. Porque motivo puede ser que no me envie los parámetros? No me da error ni nada, solo me lo ignora.

    Responder
    • Tienes que configurar bien las rutas para que cojan los parámetros, revisa la configuración de tu apache para tener activado el mod rewrite. Espero que puedas encontrar el error. Saludos 😉

      Responder

Poner un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *