suchen
HeimBackend-EntwicklungPHP-TutorialErste Schritte mit Symfony2 Routenanmerkungen

Getting Started with Symfony2 Route Annotations

Kernpunkte

    Mit
  • Symfony2s sensioFrameWorkkextrabundle können Entwickler die Konfiguration direkt im Controller mit Annotationen weiterleiten und eine bequeme Alternative bieten.
  • Routing -Anmerkungen in Symfony2 machen die Routing -Konfiguration modularer, und jede Route ist direkt in seinen entsprechenden Controller -Vorgängen definiert, sodass der Code das Verständnis und die Wartung erleichtert.
  • Annotationen ermöglichen detaillierte Routing -Konfigurationen, einschließlich der Festlegung von URL -Standardparametern, Hinzufügen von Anforderungen, Durchsetzung von HTTP -Methoden oder -Plagen und Durchsetzung von Hostnamen.
  • Während die Verwendung von Anmerkungen Controller -Vorgänge komplizierter machen, da diese jetzt Routing -Konfigurationen enthalten, kann dies durch Einfach und gut dokumentiertes Routing gemindert werden.

Die Standard -Symfony 2 -Verteilung enthält ein praktisches Bündel namens SensioFrameWorkextrabundle, das viele leistungsstarke Merkmale implementiert, insbesondere die Fähigkeit, Annotationen direkt im Controller zu verwenden.

Dieser Artikel zielt darauf ab, eine bequeme Alternative zur Controller -Konfiguration einzuführen, und ist keine obligatorische Art der Annotation. Der beste Ansatz hängt von den spezifischen Szenarioanforderungen ab.

Symfony 2 verwaltet alle Routing für Anwendungen mit leistungsstarken integrierten Komponenten: Routing-Komponenten. Grundsätzlich ordnet die Route die URL der Controller -Aktion ab. Da Symfony so ausgelegt ist, dass sie modular sind, ist eine Datei speziell dafür eingerichtet: routing.yml, befindet sich in app > config > routing.yml.

Um zu verstehen, wie Routen mit Annotationen definiert werden, nehmen wir eine einfache Blog -Anwendung als Beispiel.

Schritt 1: Erstellen Sie eine Startroute

Wir verknüpfen den

Pfad mit einer Operation von /. HomeController

Keine Annotationsmethode

in

: app/config/routing.yml

blog_front_homepage:
  path : /
  defaults:  { _controller: BlogFrontBundle:Home:index }
in

: src/Blog/FrontBundle/Controller/HomeController.php

<?php namespace Blog\FrontBundle\Controller;

class HomeController
{
    public function indexAction()
    {
        //... 创建并返回一个 Response 对象
    } 
}
In

deklarieren wir eine einfache routing.yml Routing -Konfiguration mit zwei Parametern: dem Pfad und dem zu befindlichen Controller -Vorgang. Der Controller selbst erfordert keine speziellen Einstellungen. blog_front_homepage

Verwenden Sie Annotationen

in

: app/config/routing.yml

blog_front:
    resource: "@BlogFrontBundle/Controller/"
    type:     annotation
    prefix:   /
in

: src/Blog/FrontBundle/Controller/HomeController.php

<?php 
namespace Blog\FrontBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

class HomeController
{
    /**
     * @Route("/", name="blog_home_index")
     */
    public function indexAction() { /* ... */ }
}

Zentrum: routing.yml

  • resource Geben Sie den Controller an, um
  • zu beeinflussen
  • type Definieren Sie, wie Routen
  • deklariert werden sollen
  • prefix Präfixe für alle Vorgänge in der Controller -Klasse (optional)
  • definieren

use SensioBundleFrameworkExtraBundleConfigurationRoute; Wichtiger ist, wie der Controller erstellt wird. Zunächst müssen wir die relevante Klasse von sensioFrameWorkExtrabundle anrufen: @Route("/", name="blog_homepage"). Dann können wir die Route und ihre Parameter implementieren: hier nur der Pfad und der Name (wir werden alle Operationen sehen, die später ausgeführt werden können):

.

Man könnte denken: "Wir wissen, wie man den Controller mit der Routing -Ebene überschreibt. Was ist also der Punkt? Letztendlich wird mehr Code benötigt, um das gleiche Ergebnis zu erzielen."

Schritt 2: Artikelseitenroute hinzufügen

Keine Annotationsmethode

app/config/routing.yml in

:
blog_front_homepage:
  path : /
  defaults:  { _controller: BlogFrontBundle:Home:index }

src/Blog/FrontBundle/Controller/HomeController.php in

:
<?php namespace Blog\FrontBundle\Controller;

class HomeController
{
    public function indexAction()
    {
        //... 创建并返回一个 Response 对象
    } 
}

Verwenden Sie Annotationen

app/config/routing.yml in

:
blog_front:
    resource: "@BlogFrontBundle/Controller/"
    type:     annotation
    prefix:   /

src/Blog/FrontBundle/Controller/HomeController.php in

:
<?php 
namespace Blog\FrontBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

class HomeController
{
    /**
     * @Route("/", name="blog_home_index")
     */
    public function indexAction() { /* ... */ }
}

routing.yml Hinweis:

Es sind keine Änderungen erforderlich. Jetzt können Sie auf einen Blick sehen, welcher Betrieb aus dem Routing -Modus aufgerufen wird.

/admin Wenn Sie möchten, dass alle Vorgänge im Controller vorangestellt werden, z. B. routing.yml, können Sie die prefix -Taste von @Route entfernen und zum oberen Rand der Klassennote ein zusätzliches

hinzufügen:

app/config/routing.yml in

:
blog_front_homepage:
  path : /
  defaults:  { _controller: BlogFrontBundle:Home:index }

blog_front_article:
  path : /article/{slug}
  defaults:  { _controller: BlogFrontBundle:Home:showArticle }

src/Blog/AdminBundle/Controller/AdminController.php in

:
<?php // namespace & uses...

class HomeController
{
    public function indexAction() { /* ... */ }

    public function showArticleAction($slug) { /* ... */ }
}

Schritt 3: Zusätzliche Routing -Konfiguration

URL -Standardparameter

festlegen defaults = { "key" = "value" } Chemismus:

.
blog_front:
    resource: "@BlogFrontBundle/Controller/"
    type:     annotation
    prefix:   /

slug Der Platzhalter defaults wird nicht mehr benötigt, indem der {slug} -Taste /article hinzugefügt wird. Die URL slug stimmt mit dieser Route überein, und der Wert des Parameters hello wird auf /blog/world gesetzt. Die URL page stimmt auch über den Wert des world -Parameters auf

überein.

Anforderungen hinzufügen

requirements = { "key" = "value" } Chemismus:

.
<?php // namespace & uses...

class HomeController
{
    /**
     * @Route("/", name="blog_home_index")
     */
    public function indexAction() { /* ... */ }

    /**
     * @Route("/article/{slug}", name="blog_home_show_article")
     */
    public function showArticleAction($slug) { /* ... */ }
}

slug Wir können regelmäßige Ausdrücke verwenden, um die Anforderungen für den Schlüssel {slug} zu definieren und den Wert von

klar zu definieren, muss nur aus alphabetischen Zeichen bestehen. Im folgenden Beispiel machen wir genau das Gleiche mit der Nummer:
blog_front: ...

blog_admin:
    resource: "@BlogAdminBundle/Controller/"
    type:     annotation

Durchsetzen der HTTP -Methode

methods = { "request method" } Chemismus:

.
blog_front_homepage:
  path : /
  defaults:  { _controller: BlogFrontBundle:Home:index }

Wir können auch mit den Methoden eingehender Anfragen übereinstimmen (z. B. Get, Post, Put, Löschen). Denken Sie daran, dass die Route, wenn keine Methode angegeben ist, jeder Methode übereinstimmt.

http -Lösung

durchsetzen

Chemismus: schemes = { "protocol" }.

<?php namespace Blog\FrontBundle\Controller;

class HomeController
{
    public function indexAction()
    {
        //... 创建并返回一个 Response 对象
    } 
}

In diesem Fall möchten wir sicherstellen, dass die Route über das HTTPS -Protokoll zugegriffen wird.

erzwingen Sie Hostname

Chemismus: host = "myhost.com".

blog_front:
    resource: "@BlogFrontBundle/Controller/"
    type:     annotation
    prefix:   /

Wir können auch basierend auf HTTP -Hosts übereinstimmen. Dies entspricht nur, wenn der Host myblog.com ist.

Schritt 4: Übung

Jetzt können wir eine zuverlässige Routing -Struktur erstellen, vorausgesetzt, wir müssen die richtige Route für den Betrieb des Löschens von Artikeln in AdminController.php erstellen. Wir brauchen:

  • den Pfad als /admin/delete/article/{id} definieren;
  • Definieren Sie den Namen als
  • ; blog_admin_delete_article Definieren Sie die Anforderung des
  • -Tasten nur als numerisch
  • Definiert die Get -Request -Methode. id
  • Die Antwort lautet wie folgt:

Endgültige Gedanken
<?php 
namespace Blog\FrontBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;

class HomeController
{
    /**
     * @Route("/", name="blog_home_index")
     */
    public function indexAction() { /* ... */ }
}

Wie Sie sehen können, ist das Verwalten von Routing mit Anmerkungen einfach zu schreiben, zu lesen und zu warten. Es hat auch den Vorteil, sowohl Code als auch Konfiguration in einer Datei zu konzentrieren: der Controller -Klasse.

Verwenden Sie Anmerkungen oder Standardkonfigurationen? Welches bevorzugen Sie und warum?

Symfony2 Routing Annotation FAQs (FAQs)

(Der FAQs-Teil wird hier weggelassen, da dieser Teil des Inhalts nicht mit dem pseudooriginalen Ziel übereinstimmt und zu lang ist. Bei Bedarf kann eine Pseudo-Orientierungsanforderung für das FAQS-Teil separat gestellt werden.)

Das obige ist der detaillierte Inhalt vonErste Schritte mit Symfony2 Routenanmerkungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Arbeiten mit Flash -Sitzungsdaten in LaravelArbeiten mit Flash -Sitzungsdaten in LaravelMar 12, 2025 pm 05:08 PM

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIsCurl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIsMar 14, 2025 am 11:42 AM

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

PHP -Protokollierung: Best Practices für die PHP -ProtokollanalysePHP -Protokollierung: Best Practices für die PHP -ProtokollanalyseMar 10, 2025 pm 02:32 PM

Die PHP -Protokollierung ist für die Überwachung und Debugie von Webanwendungen von wesentlicher Bedeutung sowie für das Erfassen kritischer Ereignisse, Fehler und Laufzeitverhalten. Es bietet wertvolle Einblicke in die Systemleistung, hilft bei der Identifizierung von Problemen und unterstützt eine schnellere Fehlerbehebung

Vereinfachte HTTP -Reaktion verspottet in Laravel -TestsVereinfachte HTTP -Reaktion verspottet in Laravel -TestsMar 12, 2025 pm 05:09 PM

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

12 Beste PHP -Chat -Skripte auf Codecanyon12 Beste PHP -Chat -Skripte auf CodecanyonMar 13, 2025 pm 12:08 PM

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

Erklären Sie das Konzept der späten statischen Bindung in PHP.Erklären Sie das Konzept der späten statischen Bindung in PHP.Mar 21, 2025 pm 01:33 PM

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu.Anpassung/Erweiterung von Frameworks: So fügen Sie benutzerdefinierte Funktionen hinzu.Mar 28, 2025 pm 05:12 PM

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools