Suche…


Einführung

Eine Route ist wie das Zuordnen einer URL zu einer Aktion (Funktion) in einer Controller-Klasse. Das folgende Thema konzentriert sich auf das Erstellen von Routen und die Übergabe von Parametern an die Controller-Klasse über eine Route mithilfe von YAML oder Annotation.

Bemerkungen

Es ist hilfreich zu sehen, was von Symfony Framework generiert wird. Dieses Tool bietet Tools zum Überwachen aller Routen einer bestimmten Anwendung.

Verwenden Sie in Symfony Doc (in einer Shell):

php bin/console debug:router

Sie können auch alle relevanten Routeninformationen im Framework-Profiler im Routing-Menü anzeigen: Symfony-Profiler

Routing mit YAML

Die Routing-Konfiguration ist in Ihrer app/config/config.yml Datei enthalten, standardmäßig die app/config/routing.yml Datei.

Von dort aus können Sie in einem Bundle eine Verknüpfung zu Ihrer eigenen Routing-Konfiguration herstellen

# app/config/routing.yml

app:
    resource: "@AppBundle/Resources/config/routing.yml"

Es kann auch mehrere globale Anwendungsrouten enthalten.

In Ihrem eigenen Paket können Sie Routen konfigurieren, die zwei Zwecken dienen:

  • Abgleich mit einer Anfrage, sodass die richtige Aktion für die Anfrage aufgerufen wird.
  • URL aus den Namen und Routenparametern generieren.

Nachfolgend finden Sie eine Beispielkonfiguration für YAML-Routen:

# src/AppBundle/Resources/config/routing.yml

my_page:
    path: /application/content/page/{parameter}
    defaults:
        _controller: AppBundle:Default:myPage
        parameter: 42
    requirements:
        parameter: '\d+'
    methods: [ GET, PUT ]
    condition: "request.headers.get('User-Agent') matches '/firefox/i'"

Die Route heißt my_page und ruft bei Aufforderung die myPageAction des DefaultController im AppBundle . Es hat einen Parameter namens parameter mit einem Standardwert. Der Wert ist nur gültig, wenn er mit dem Regex \d+ übereinstimmt. Für diese Route werden nur die HTTP-Methoden GET und PUT akzeptiert. Die condition ist ein Ausdruck in dem Beispiel, in dem die Route nicht übereinstimmt, sofern der User-Agent-Header nicht mit firefox übereinstimmt. Sie können jede komplexe Logik ausführen, die Sie im Ausdruck benötigen, indem Sie zwei Variablen nutzen, die an den Ausdruck übergeben werden: context (RequestContext) und request (Symfony Request).

Eine generierte Route mit dem Parameterwert 10 kann wie /application/content/page/10 aussehen.

Routing mit Anmerkungen

Die Routing-Konfiguration ist in Ihrer app/config/config.yml Datei enthalten, standardmäßig die app/config/routing.yml Datei.

Von dort aus können Sie eine Verbindung zu den Controllern herstellen, die die Routing-Konfiguration mit Anmerkungen versehen haben:

# app/config/routing.yml

app:
    resource: "@AppBundle/Controller"
    type:     annotation

In Ihrem eigenen Paket können Sie Routen konfigurieren, die zwei Zwecken dienen:

  • Abgleich mit einer Anfrage, sodass die richtige Aktion für die Anfrage aufgerufen wird.
  • URL aus den Namen und Routenparametern generieren.

Nachfolgend finden Sie eine kommentierte Routenkonfiguration:

// src/AppBundle/Controller/DefaultController.php

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;

/**
 * @Route("/application")
 */
class DefaultController extends Controller {
    /**
     * @Route("/content/page/{parameter}",
     *        name="my_page",
     *        requirements={"parameter" = "\d+"},
     *        defaults={"parameter" = 42})
     * @Method({"GET", "PUT"})
     */
    public function myPageAction($parameter)
    {
        // ...
    }
}

Der Controller wird mit einer Präfixroute kommentiert, sodass jede konfigurierte Route in diesem Controller mit dem Präfix vorangestellt wird.

Die konfigurierte Route heißt my_page und ruft bei myPageAction Funktion myPageAction . Es hat einen Parameter namens parameter mit einem Standardwert. Der Wert ist nur gültig, wenn er mit dem Regex \d+ übereinstimmt. Für diese Route werden nur die HTTP-Methoden GET und PUT akzeptiert.

Beachten Sie, dass der Parameter als Funktionsparameter in die Aktion eingefügt wird.

Eine generierte Route mit dem Parameterwert 10 kann wie /application/content/page/10 aussehen.

Leistungsfähige Restwege

Normalerweise können Sie Routing verwenden, um eine Anforderung der Routing-Komponente zuzuordnen, die die Anforderungs- und Antwortparameter von der HttpFoundation-Komponente verarbeitet hat .

Darüber hinaus kann ein benutzerdefinierter Routenparameter mithilfe von FOSRestBundle erstellt werden, um die Standardfunktionalitäten der Routingkomponente zu erweitern.

Dies ist nützlich zum Erstellen von REST-Routen. Dies ist wirklich nützlich, um anzugeben, wie strukturierte Daten wie XML- oder Json-Dateien in einer Anforderung (und einer Antwort) übertragen werden.

Weitere Informationen und insbesondere diese Anmerkung finden Sie in FOSRestBundle Doc.

use FOS\RestBundle\Controller\Annotations\FileParam;

/**
 * @FileParam(
 *   name="",
 *   key=null,
 *   requirements={},
 *   default=null,
 *   description="",
 *   strict=true,
 *   nullable=false,
 *   image=false
 * )
 */


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