Ricerca…


introduzione

Il routing è il processo di mappatura di un URL a un controller . Symfony ha un potente componente di Routing che ti permette di definire i percorsi.

Il componente Routing supporta numerosi formati di configurazione: annotazioni, YAML, XML e PHP raw.

Parametri

Parametro Dettagli
nome Il nome del percorso. Esempio: book_show
sentiero Il percorso (potrebbe contenere caratteri jolly). Esempio: /book/{isbn}
default Valori predefiniti dei parametri

Percorsi semplici

Utilizzando YAML:

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

Utilizzando annotazioni:

// 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 richiesta per l'URL /blog verrà gestita dal metodo listAction() del BlogController all'interno di AppBundle .

Percorsi con segnaposti

Utilizzando YAML:

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

Utilizzando annotazioni:

// 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)
    {
        // ...
    }
}

Qualsiasi richiesta con un URL corrispondente /blog/* sarà gestita dal metodo showAction() di BlogController all'interno di AppBundle . L'azione del controller riceverà il valore del segnaposto come argomento del metodo.

Ad esempio, una richiesta per /blog/my-post attiverà una chiamata a showAction() con un argomento $slug contenente il valore my-post . Utilizzando tale argomento, l'azione del controller può modificare la risposta in base al valore del segnaposto, ad esempio recuperando il post del blog con lo slug my-post dal database.

Valori predefiniti per segnaposti

Se vuoi avere un segnaposto che può essere omesso, puoi dargli un valore predefinito:

Utilizzando YAML:

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

Utilizzando annotazioni:

// 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)
    {
        // ...
    }
}

In questo esempio, sia gli URL /blog e /blog/1 corrisponderanno al percorso blog_list e saranno gestiti dal metodo listAction() . Nel caso di /blog , listAction() riceverà comunque l'argomento $page , con il valore predefinito 1 .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow