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 .