Suche…


Einführung

Beim Routing wird eine URL einem Controller zugeordnet . Symfony verfügt über eine leistungsfähige Routing-Komponente, mit der Sie Routen definieren können.

Die Routing-Komponente unterstützt eine Reihe von Konfigurationsformaten: Anmerkungen, YAML, XML und Raw-PHP.

Parameter

Parameter Einzelheiten
Name Der Name der Route Beispiel: book_show
Pfad Der Pfad (kann Platzhalter enthalten). Beispiel: /book/{isbn}
Standardeinstellungen Standardwerte der Parameter

Einfache Routen

Verwendung von YAML:

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

Annotationen verwenden:

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

Eine Anfrage für die /blog URL wird von der listAction() Methode des BlogController in AppBundle .

Routen mit Platzhaltern

Verwendung von YAML:

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

Annotationen verwenden:

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

Jede Anfrage mit einer URL, die mit /blog/* übereinstimmt, wird von der showAction() Methode des BlogController in AppBundle . Die Controller-Aktion erhält den Wert des Platzhalters als Methodenargument.

Eine Anfrage nach /blog/my-post löst beispielsweise einen Aufruf von showAction() mit einem Argument $slug das den Wert my-post . Mit diesem Argument kann die Controller-Aktion die Antwort abhängig vom Wert des Platzhalters ändern, z. B. durch Abrufen des Blogposts mit dem Slug my-post aus der Datenbank.

Standardwerte für Platzhalter

Wenn Sie einen Platzhalter haben möchten, der möglicherweise weggelassen wird, können Sie ihm einen Standardwert zuweisen:

Verwendung von YAML:

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

Annotationen verwenden:

// 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 diesem Beispiel stimmen die URLs /blog und /blog/1 mit der Route der blog_list und werden von der listAction() -Methode verarbeitet. Im Falle von /blog listAction() weiterhin das Argument $page mit dem Standardwert 1 .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow