suchen
HeimBackend-EntwicklungPHP-TutorialErstellen Sie ein Drupal 8 -Modul: Routing, Controller und Menü -Links

Build a Drupal 8 Module: Routing, Controllers and Menu Links

Kernpunkte

  • Drupal 8 bewegt sich von prozeduraler Programmierung zu objektorientierter Architektur und integriert Code aus anderen Quellen durch das stolz gefundene Programm an anderer Stelle, einschließlich wichtiger Ergänzungen wie Symfony-Komponenten.
  • Erstellen eines Drupal 8 -Moduls erfordert das Definieren der erforderlichen Ordnerstruktur und -dateien, wie z. B. .info.yml Dateien. Die Ordner für benutzerdefinierte und Beitragsmodul befinden sich nun direkt unter dem Stammverzeichnis modules/ und der Kerncode wird in einen separaten core/ Ordner verschoben.
  • "Routing" in Drupal 8 ersetzt die hook_menu() -Funktion in Drupal 7 und nutzt die Symfony2 -Komponente. Dies beinhaltet die Definition der Route als Konfiguration und die Bearbeitung der Rückruffunktion im Controller. Die Routing -Datei des Moduls demo.routing.yml wird im Modul -Root -Ordner erstellt.
  • Der Menülink
  • wird nicht mehr über hook_menu() verarbeitet, sondern als Konfiguration in der YML -Datei deklariert. Erstellen Sie eine Datei mit dem Namen demo.menu_links.yml im Modul -Root -Verzeichnis, um den Menülink und ihren Speicherort im vorhandenen Menü der Website zu definieren.

Beachten Sie, dass Drupal 8 zum Zeitpunkt des Schreibens, da es zum Zeitpunkt des Schreibens noch in der Entwicklung ist, ein Teil des Codes möglicherweise veraltet ist. Bitte beziehen Sie sich in der Codebasis, in der ich versucht habe, den Beispielcode zu aktualisieren und ihn mit der neuesten Drupal 8 -Version kompatibel zu machen.

Drupal 8 führt viele Änderungen vor und versucht, es mit anderen modernen PHP -Frameworks auszurichten. Dies bedeutet, dass die prozedurale Programmierung im alten PHP 4-Stil weitgehend durch objektorientierte Architektur ersetzt wurde. Um dies zu erreichen, enthält Drupal 8 im Rahmen des stolz gefundenen Programms an anderer Stelle Code, der nicht speziell für Drupal entwickelt wurde.

Eine der wichtigsten Ergänzungen zum Drupal ist die Symfony -Komponente, die zwei Hauptauswirkungen auf Drupal -Entwickler hat. Erstens hat es das Potenzial, die Anzahl der Entwickler, die sich jetzt für Drupal entwickeln möchten, erheblich zu erhöhen. Zweitens hat es einigen Drupal 7 -Entwicklern, denen es an modernen Erfahrung in der PHP -Praxis fehlt, einige Bedenken hinterlassen. Aber das ist in Ordnung, wir alle lernen, die Erfahrung, die wir aus Frameworks wie Symfony (und hoffentlich Drupal 8) gelernt haben, werden leicht verlängert und auf andere PHP -Frameworks angewendet.

In der Zwischenzeit befindet sich Drupal 8 in den späten Stadien seines Veröffentlichungszyklus, wobei die aktuelle Version zum Zeitpunkt des Schreibens von Alpha11. Wir werden diese Version verwenden, um einige grundlegende Änderungen in der Modulentwicklung zu präsentieren, auf die Drupal 7 -Entwickler zuerst begegnen und mit der Sie vertraut sein sollten. Ich habe eine Git -Codebasis eingerichtet, in der Sie den Code finden, den ich in dieser Serie geschrieben habe, und wenn Sie es vorziehen, können Sie so folgen und lernen.

Wie erstelle ich ein Modul?

Das erste, worauf wir uns konzentrieren müssen, ist das Definieren der erforderlichen Ordnerstrukturen und -dateien, damit Drupal 8 unsere neuen Module verstehen kann. In Drupal 7 müssen wir mindestens zwei Dateien (.info und .module) erstellen, aber in Drupal 8 reicht die YAML -Version des ersteren aus. Ja, die .info -Datei wird nun durch die .info.yml -Datei ersetzt, die ähnliche Daten enthält, jedoch mit unterschiedlichen Strukturen.

Eine weitere große Änderung ist, dass die Ordner benutzerdefinierter und Beitragsmodul jetzt direkt zum Ordner Root Directory modules/ gehen. Dies liegt daran, dass der gesamte Kerncode in seinen eigenen separaten core/ -Fordner verschoben wurde. Natürlich wird im Verzeichnis modules/ empfohlen, um Module in benutzerdefinierte und Beitrag wie in Drupal 7 zu trennen.

Erstellen wir ein Modul namens Demo (sehr originell) und legen Sie es in das Verzeichnis modules/custom/. Wie ich bereits erwähnt habe, benötigen wir in diesem neu erstellten demo/ Ordner zuerst nur eine demo.info.yml -Datei, die den folgenden erforderlichen Inhalt enthält:

name: Drupal 8 Demo module
description: 'Demo module for Drupal 8 alpha11'
type: module
core: 8.x

Sie sollten mit drei der vier Schlüsselwertpaare (Name, Beschreibung und Kern) vertraut sein. Typ ist jetzt auch eine Anforderung, da Sie auch YML -Dateien für das Thema erstellen können. Eine weitere wichtige Sache ist, dass Leerzeichen in der YML-Datei sinnvoll sind und die richtige Eindrücke verwenden, um die Daten in eine Array-ähnliche Struktur zu organisieren.

Sie können diese Dokumentseite für zusätzliche Schlüsselwertpaare anzeigen, die zur Modul-Datei .info.yml hinzugefügt werden können, sowie Anweisungen zur Ankündigung von Änderungen an diesem Format.

Es ist so, eine Datei. Sie können jetzt zur Seite der Erweiterungen navigieren, das Demo -Modul suchen und es aktivieren.

Wie ich bereits erwähnt habe, müssen wir, bevor wir das Modul aktivieren, keine .module Datei mehr erstellen. Architektonisch gesehen wird die Größe der .module -Datei stark reduziert, da der größte Teil der Geschäftslogik in die Serviceklassen, Controller und Plugins verschoben wird, aber einige davon werden später sehen.

Was ist "Routing" und was passiert mit seinen Rückruffunktionen? hook_menu()

In Drupal 7 ist

wahrscheinlich der am meisten implementierte Haken, da es verwendet wird, um die Pfade von Drupal zu definieren und diese Pfade mit der Rückruffunktion zu verbinden. Es ist auch für das Erstellen von Menülinks und vielen anderen Inhalten verantwortlich. hook_menu()

In Drupal 8 brauchen wir nicht mehr

, da wir Symfony2 -Komponenten stark verwenden, um das Routing zu verarbeiten. Dies beinhaltet die Definition der Route als Konfiguration und die Verarbeitung der Rückruffunktion im Controller (eine Funktion der Controller -Klasse). Lassen Sie uns sehen, wie Sie dies tun, indem Sie eine einfache Seite erstellen, die klassische Hello World ausgibt! hook_menu()

Erstens müssen wir eine Routing -Datei mit dem Namen

für unser Modul erstellen. Diese Datei befindet sich im Modul -Root -Ordner (neben demo.routing.yml). In dieser Datei können wir die folgende (einfache) Routendefinition haben: demo.info.yml

name: Drupal 8 Demo module
description: 'Demo module for Drupal 8 alpha11'
type: module
core: 8.x

Die erste Zeile markiert den Beginn des Erstellens einer neuen Route namens Demo für die Moduldemo (der erste ist der Modulname und der zweite der Routenname). Unter Pfad geben wir den Pfad an, sich für diese Route zu registrieren. Unter Standardeinstellungen haben wir zwei Dinge: den Standard -Seitentitel (_title) und _content, auf die eine Funktion auf der Democontroller -Klasse verweist. Nach Anforderungen geben wir die Berechtigungen an, die der Benutzer haben muss, um die Seite anzuzeigen. Sie sollten diese Dokumentationsseite für weitere Optionen konsultieren, die diese Routing -Datei haben kann.

Erstellen wir jetzt unseren ersten Controller namens DemoController, der eine Funktion namens Demo () aufruft, wenn der Benutzer diese Seite anfordert.

Erstellen Sie im Modulverzeichnis einen Ordner namens SRC/ und erstellen Sie einen Ordner mit dem Namen Controller/ darin. Hier wird die Controller -Klasse gespeichert. Erstellen Sie weiterhin den ersten: Democontroller.php.

Der Controller und die anderen Klassen, die wir später im SRC/ Ordner sehen werden, sind Teil des PSR-4-Standards. Zunächst mussten wir eine größere Ordnerstruktur (PSR-0-Standard) erstellen, aber jetzt gibt es eine Übergangsphase, in der beide funktionieren. Wenn Sie also den Code in einem Ordner namens LIB/ immer noch sehen, ist er PSR-0.

In unserer Democontroller.php -Datei können wir jetzt unsere Klasse deklarieren:

demo.demo:
  path: '/demo'
  defaults:
    _content: '\Drupal\demo\Controller\DemoController::demo'
    _title: 'Demo'
  requirements:
    _permission: 'access content'

Dies ist das einfachste und am wenigsten zu tun, um etwas auf der Seite anzuzeigen. Oben geben wir den Klassennamenspace an. Im Folgenden deklarieren wir die Klasse.

In der Democontroller -Klasse haben wir nur die Demo () -Funktion, die ein wiedergegebenes Array ähnlich wie bei Drupal 7 zurückgibt. Es ist keine große Sache. Alles, was wir jetzt tun müssen, ist den Cache zu löschen und zum https://www.php.cn/link/1a4a5f89e71e4bb9973355c964a950b4 Drupal Page mit Hallo Welt zu sehen.

In Drupal 7 können wir bei der Implementierung hook_menu() den registrierten Pfad auch zum Menü hinzufügen, um den Menülink auf der Website anzuzeigen. Auch dies wird nicht mehr mit diesem Haken behandelt, sondern definiert den Menülink als Konfiguration mithilfe der YML -Datei.

Schauen wir uns an, wie Sie einen Menülink erstellen, der im Menü "verwaltete" Struktur "angezeigt wird. Zunächst müssen wir eine Datei namens demo.menu_links.yml im Stammverzeichnis des Moduls erstellen. In dieser YML -Datei definieren wir den Menülink und seinen Standort im vorhandenen Menü der Website. Um die von uns festgelegten Ziele zu erreichen, brauchen wir Folgendes:

<?php
/**
 * @file
 * Contains \Drupal\demo\Controller\DemoController.
 */

namespace Drupal\demo\Controller;

/**
 * DemoController.
 */
class DemoController {
  /**
   * Generates an example page.
   */
  public function demo() {
    return array(
      '#markup' => t('Hello World!'),
    );
  }
}

Wir haben noch einmal eine einstiegbasierte YML-Struktur, in der wir zuerst den Maschinennamen (Demo) des Menülinks für die Modul-Demo definieren (wie wir es beim Routing getan haben). Als nächstes haben wir den Link -Titel und die Beschreibung, gefolgt von dem übergeordneten Link (wo er platziert werden soll) und welche Route er verwenden sollte.

Der Wert von

übergeordnet ist der übergeordnete Menülink (das Modul anhängen). Um ihn zu finden, müssen Sie in der Datei *.menu_links.yml eingehen. Ich weiß, dass der "Struktur" -Link im Kernsystemmodul definiert ist. Durch die Betrachtung des Systems.

Route_Name ist der Name der Maschine der Route, die wir für diesen Link verwenden möchten. Wir haben unsere schon einmal definiert. Damit können Sie den Cache löschen und zum https://www.php.cn/link/6c2665d7c3ed1e5bfd8ba600F026EB55 Demo/Path. Gut.

Schlussfolgerung

In diesem Artikel beginnen wir, die Entwicklung der Modul in Drupal 8 zu untersuchen. In dieser Phase (Alpha11 -Version) ist es an der Zeit, zu lernen, wie die neuen API- und Port -Beitragsmodule verwendet werden. Dazu schreibe ich meine Erkundung dieses neuen aufregenden Rahmens (Drupal 8), damit wir alle über diese Änderungen erfahren und sofort in die Arbeit einsteigen können, wenn der Veröffentlichungstag ankommt.

Zuerst haben wir einige Grundlagen gelernt: So starten Sie das Drupal 8 -Modul (Dateien, Ordnerstrukturen usw.) und vergleichen es mit Drupal 7. Wir haben auch gelernt, wie man eine Route und eine Controller -Klasse definiert und wie man eine Funktion über diese Route aufruft. Schließlich sehen wir, wie Sie einen Menülink erstellen, der die von uns definierte Route verwendet.

Im nächsten Tutorial werden wir dieses Modul weiter erstellen und einige andere coole neue Funktionen kennenlernen, die Drupal 8 verwendet. Wir lernen, wie Sie Blöcke erstellen und Formulare verwenden und das System konfigurieren. Wir sehen uns dann.

FAQs über den Bau von Drupal 8 Modulen (FAQ)

Was ist die Grundstruktur des Drupal 8 -Moduls?

Das Drupal 8 -Modul ist im Wesentlichen eine Reihe von Dateien, die bestimmte Funktionen enthalten und auf eine bestimmte Weise integriert. Die Grundstruktur enthält eine

-Datei (Bereitstellung von Metadaten über das Modul), eine .info.yml -Datei (einschließlich PHP -Code) und andere optionale Dateien wie .module, .css, .js usw. für Anhängenfunktion. .twig Dateien sind obligatorisch, die den Namen, die Beschreibung, das Paket, den Typ, den Kern und die Abhängigkeiten des Moduls definieren. .info.yml

Wie funktioniert das Routing -System in Drupal 8?

Das Routing -System in Drupal 8 ist für die Zuordnung der URL auf eine bestimmte Controller -Klasse verantwortlich. Es verwendet die Routing -Komponente von Symfony, die flexible und leistungsstarke Systeme ermöglicht. Das Routing -System verwendet die

-Datei, um Routen mit eindeutigen Namen, Pfaden, Standardwerten und Anforderungen zu definieren. Der Standardwert gibt normalerweise die Controller -Klasse an, die für die Bearbeitung der Anfrage verantwortlich ist. routing.yml

Wie erstelle ich eine benutzerdefinierte Seite in Drupal 8?

Erstellen einer benutzerdefinierten Seite in Drupal 8 beinhaltet das Definieren von Routen und Controllern. Die Route ist in der Datei

definiert und ordnet die URL an den Controller ab. Der Controller ist eine PHP -Klasse, die ein gerendertes Array für den Seiteninhalt zurückgibt. Die Controller -Klasse sollte im Verzeichnis routing.yml des Moduls platziert werden. src/Controller

Hinzufügen eines Menülinks zu Ihrer benutzerdefinierten Seite beinhaltet das Erstellen einer links.menu.yml -Datei in Ihrem Modul. Diese Datei definiert einen Menülink, dessen Eigenschaften Titel, Beschreibung, Eltern, Routennamen und Gewicht enthalten. Der Routename sollte mit dem in der routing.yml -Fatei definierten Routennamen übereinstimmen.

Wie erstelle ich eine Form in Drupal 8?

Erstellen einer Form in Drupal 8 beinhaltet das Erstellen einer Formklasse, die die FormBase -Klasse erweitert und FormInterface implementiert. Diese Klasse definiert Formularelemente, Validierung und Einreichungsverarbeitung. Das Formular kann angezeigt werden, indem es vom Controller zurückgegeben wird.

Wie erstelle ich Blöcke in Drupal 8?

Erstellen eines Blocks in Drupal 8 beinhaltet das Erstellen einer Blockklasse, die die BlockBase -Klasse erweitert. Diese Klasse definiert Blockinhalte und andere Eigenschaften. Blöcke können über die Block -Layout -Schnittstelle auf der Seite platziert werden.

Wie erstelle ich ein Konfigurationsformular in Drupal 8?

Erstellen eines Konfigurationsformulars beinhaltet das Erstellen einer Formularklasse, die die ConfigFormBase -Klasse erweitert und FormInterface implementiert. Diese Klasse definiert Formularelemente und behandelt den Speicher und das Laden von Konfigurationsdaten.

Wie erstelle ich eine Administratorseite in Drupal 8?

Erstellen einer administrativen Seite beinhaltet das Definieren einer Route unter /admin und einen Controller, der den Seiteninhalt zurückgibt. Seiten können zum Admin -Menü hinzugefügt werden, indem ein Menülink mit einem Elternteil unter system.admin definiert wird.

Wie erstelle ich ein Thema in Drupal 8?

Erstellen eines Themas in Drupal 8 beinhaltet das Erstellen einer .info.yml -Datei, die den Namen, die Beschreibung, den Typ, den Kern und die grundlegenden Themen definiert. Andere .twig, .css und .js Dateien können hinzugefügt werden, um Themen für jedes Element festzulegen.

Wie erstelle ich einen benutzerdefinierten Feldtyp in Drupal 8?

Erstellen eines benutzerdefinierten Feldtyps beinhaltet das Erstellen einer Feldtypklasse, die die FieldTypePluginBase -Klasse erweitert. Diese Klasse definiert Feldeigenschaften und -methoden zum Speichern, Anzeigen und Form der Verarbeitung. Feldtypen können für Inhaltstypen, Benutzer, Kommentare und andere Unternehmen verwendet werden.

Das obige ist der detaillierte Inhalt vonErstellen Sie ein Drupal 8 -Modul: Routing, Controller und Menü -Links. 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
11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium)11 beste PHP -URL -Shortener -Skripte (kostenlos und Premium)Mar 03, 2025 am 10:49 AM

Lange URLs, die oft mit Schlüsselwörtern und Tracking -Parametern überfüllt sind, können Besucher abschrecken. Ein URL -Verkürzungsskript bietet eine Lösung, die präzise Links erstellt, die ideal für soziale Medien und andere Plattformen sind. Diese Skripte sind für einzelne Websites a wertvoll

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-

Erstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagierenErstellen Sie eine React -App mit einem Laravel -Back -Ende: Teil 2, reagierenMar 04, 2025 am 09:33 AM

Dies ist der zweite und letzte Teil der Serie zum Aufbau einer Reaktionsanwendung mit einem Laravel-Back-End. Im ersten Teil der Serie haben wir eine erholsame API erstellt, die Laravel für eine grundlegende Produktlistenanwendung unter Verwendung von Laravel erstellt hat. In diesem Tutorial werden wir Dev sein

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' =>

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

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

Ankündigung von 2025 PHP Situation SurveyAnkündigung von 2025 PHP Situation SurveyMar 03, 2025 pm 04:20 PM

Die 2025 PHP Landscape Survey untersucht die aktuellen PHP -Entwicklungstrends. Es untersucht Framework -Nutzung, Bereitstellungsmethoden und Herausforderungen, die darauf abzielen, Entwicklern und Unternehmen Einblicke zu geben. Die Umfrage erwartet das Wachstum der modernen PHP -Versio

Benachrichtigungen in LaravelBenachrichtigungen in LaravelMar 04, 2025 am 09:22 AM

In diesem Artikel werden wir das Benachrichtigungssystem im Laravel -Web -Framework untersuchen. Mit dem Benachrichtigungssystem in Laravel können Sie Benachrichtigungen an Benutzer über verschiedene Kanäle senden. Heute werden wir diskutieren, wie Sie Benachrichtigungen OV senden können

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ßer Artikel

Heiße Werkzeuge

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung