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 .