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
.