Zoeken…


Invoering

Routering is het proces waarbij een URL wordt toegewezen aan een controller . Symfony heeft een krachtige component Routing waarmee u routes kunt definiëren.

De component Routing ondersteunt een aantal configuratie-indelingen: annotaties, YAML, XML en raw PHP.

parameters

Parameter Details
naam De naam van de route. Voorbeeld: book_show
pad Het pad (kan jokertekens bevatten). Voorbeeld: /book/{isbn}
defaults Standaardwaarden van parameters

Eenvoudige routes

YAML gebruiken:

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

Annotaties gebruiken:

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

Een aanvraag voor de /blog URL wordt afgehandeld door de methode listAction() van de BlogController in AppBundle .

Routes met tijdelijke aanduidingen

YAML gebruiken:

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

Annotaties gebruiken:

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

Elk verzoek met een URL-matching /blog/* wordt afgehandeld door de methode showAction() van de BlogController in AppBundle . De controlleractie ontvangt de waarde van de tijdelijke aanduiding als methodeargument.

Een verzoek voor /blog/my-post activeert bijvoorbeeld een aanroep van showAction() met een argument $slug met de waarde my-post . Met behulp van dat argument kan de controlleractie de reactie wijzigen afhankelijk van de waarde van de tijdelijke aanduiding, bijvoorbeeld door de blogpost met de slug my-post uit de database op te halen.

Standaardwaarden voor tijdelijke aanduidingen

Als u een tijdelijke aanduiding wilt die kan worden weggelaten, kunt u deze een standaardwaarde geven:

YAML gebruiken:

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

Annotaties gebruiken:

// 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 dit voorbeeld komen zowel de /blog als /blog/1 URL's overeen met de blog_list route en worden ze behandeld met de methode listAction() . In het geval van /blog listAction() nog steeds het argument $page , met de standaardwaarde 1 .



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow