Sök…


Introduktion

Routing är processen för att mappa en URL till en controller . Symfony har en kraftfull routingkomponent som låter dig definiera rutter.

Routing-komponenten stöder ett antal konfigurationsformat: kommentarer, YAML, XML och raw PHP.

parametrar

Parameter detaljer
namn Ruttens namn. Exempel: book_show
väg Sökvägen (kan innehålla jokertecken). Exempel: /book/{isbn}
defaults Standardvärden för parametrar

Enkla rutter

Använda YAML:

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

Använda kommentarer:

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

En begäran om URL /blog kommer att hanteras med listAction() för BlogController inuti AppBundle .

Rutter med platshållare

Använda YAML:

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

Använda kommentarer:

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

Alla förfrågningar med en URL-matchning /blog/* kommer att hanteras med showAction() -metoden för BlogController inom AppBundle . Controlleråtgärden kommer att få platshållarens värde som ett metodargument.

Till exempel kommer en begäran om /blog/my-post att utlösa ett samtal till showAction() med ett argument $slug innehåller värdet my-post . Med hjälp av detta argument kan controlleråtgärden ändra svaret beroende på platshållarens värde, till exempel genom att hämta blogginlägget med slug my-post från databasen.

Standardvärden för platshållare

Om du vill ha en platshållare som kan utelämnas kan du ge den ett standardvärde:

Använda YAML:

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

Använda kommentarer:

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

I det här exemplet kommer både /blog och /blog/1 URL: blog_list rutten blog_list och hanteras med listAction() . I fallet med /blog kommer listAction() fortfarande att få $page argumentet med standardvärdet 1 .



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow