Buscar..


Introducción

El enrutamiento es el proceso de asignar una URL a un controlador . Symfony tiene un potente componente de enrutamiento que te permite definir rutas.

El componente de enrutamiento admite varios formatos de configuración: anotaciones, YAML, XML y PHP en bruto.

Parámetros

Parámetro Detalles
nombre El nombre de la ruta. Ejemplo: book_show
camino La ruta (puede contener comodines). Ejemplo: /book/{isbn}
por defecto Valores por defecto de los parámetros.

Rutas sencillas

Usando YAML:

# app/config/routing.yml
blog_list:
    path:     /blog
    defaults: { _controller: AppBundle:Blog:list }

Uso de anotaciones:

// src/AppBundle/Controller/BlogController.php
namespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

class BlogController extends Controller
{
    /**
     * @Route("/blog", name="blog_list")
     */
    public function listAction()
    {
        // ...
    }
}

Una solicitud para la URL de /blog será manejada por el método listAction() del BlogController dentro de AppBundle .

Rutas con marcadores de posición.

Usando YAML:

# app/config/routing.yml
blog_show:
    path:     /blog/{slug}
    defaults: { _controller: AppBundle:Blog:show }

Uso de anotaciones:

// src/AppBundle/Controller/BlogController.php
namespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

class BlogController extends Controller
{
    /**
     * @Route("/blog/{slug}", name="blog_show")
     */
    public function showAction($slug)
    {
        // ...
    }
}

Cualquier solicitud con una URL coincidente /blog/* será manejada por el método showAction() del BlogController dentro de AppBundle . La acción del controlador recibirá el valor del marcador de posición como un argumento de método.

Por ejemplo, una solicitud de /blog/my-post activará una llamada a showAction() con un argumento $slug contiene el valor my-post . Usando ese argumento, la acción del controlador puede cambiar la respuesta dependiendo del valor del marcador de posición, por ejemplo, recuperando la publicación del blog con el slug my-post de la base de datos.

Valores por defecto para marcadores de posición

Si desea tener un marcador de posición que se puede omitir, puede asignarle un valor predeterminado:

Usando YAML:

# app/config/routing.yml
blog_list:
    path:      /blog/{page}
    defaults:  { _controller: AppBundle:Blog:list, page: 1 }
    requirements:
        page: '\d+'

Uso de anotaciones:

// src/AppBundle/Controller/BlogController.php
namespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

class BlogController extends Controller
{
    /**
     * @Route("/blog/{page}", name="blog_list", requirements={"page": "\d+"})
     */
    public function listAction($page = 1)
    {
        // ...
    }
}

En este ejemplo, las URL /blog y /blog/1 coincidirán con la ruta blog_list y serán manejadas por el método listAction() . En el caso de /blog , listAction() aún recibirá el argumento $page , con el valor predeterminado 1 .



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow