


Erstellen Sie ein Drupal 8 -Modul: Routing, Controller und Menü -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 Stammverzeichnismodules/
und der Kerncode wird in einen separatencore/
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 Modulsdemo.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 Namendemo.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()
, 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()
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.
Wo ist der Menülink?
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
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
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
Wie füge ich meiner Drupal 8 benutzerdefinierten Seite einen Menülink hinzu?
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











In PHP sollten die Funktionen für Passwort_Hash und passwart_verify verwendet werden, um sicheres Passwort -Hashing zu implementieren, und MD5 oder SHA1 sollte nicht verwendet werden. 1) Passwort_hash generiert einen Hash, der Salzwerte enthält, um die Sicherheit zu verbessern. 2) Passwort_Verify prüfen Sie das Passwort und sicherstellen Sie die Sicherheit, indem Sie die Hash -Werte vergleichen. 3) MD5 und SHA1 sind anfällig und fehlen Salzwerte und sind nicht für die Sicherheit der modernen Passwort geeignet.

PHP und Python haben jeweils ihre eigenen Vorteile und wählen nach den Projektanforderungen. 1.PHP ist für die Webentwicklung geeignet, insbesondere für die schnelle Entwicklung und Wartung von Websites. 2. Python eignet sich für Datenwissenschaft, maschinelles Lernen und künstliche Intelligenz mit prägnanter Syntax und für Anfänger.

PHP ist eine Skriptsprache, die auf der Serverseite weit verbreitet ist und insbesondere für die Webentwicklung geeignet ist. 1.PHP kann HTML einbetten, HTTP -Anforderungen und Antworten verarbeiten und eine Vielzahl von Datenbanken unterstützt. 2.PHP wird verwendet, um dynamische Webinhalte, Prozessformdaten, Zugriffsdatenbanken usw. mit starker Community -Unterstützung und Open -Source -Ressourcen zu generieren. 3. PHP ist eine interpretierte Sprache, und der Ausführungsprozess umfasst lexikalische Analyse, grammatikalische Analyse, Zusammenstellung und Ausführung. 4.PHP kann mit MySQL für erweiterte Anwendungen wie Benutzerregistrierungssysteme kombiniert werden. 5. Beim Debuggen von PHP können Sie Funktionen wie error_reporting () und var_dump () verwenden. 6. Optimieren Sie den PHP-Code, um Caching-Mechanismen zu verwenden, Datenbankabfragen zu optimieren und integrierte Funktionen zu verwenden. 7

PHP wird in E-Commerce, Content Management Systems und API-Entwicklung häufig verwendet. 1) E-Commerce: Wird für die Einkaufswagenfunktion und Zahlungsabwicklung verwendet. 2) Content -Management -System: Wird für die Erzeugung der dynamischen Inhalte und die Benutzerverwaltung verwendet. 3) API -Entwicklung: Wird für die erholsame API -Entwicklung und die API -Sicherheit verwendet. Durch Leistungsoptimierung und Best Practices werden die Effizienz und Wartbarkeit von PHP -Anwendungen verbessert.

PHP -Typ -Eingabeaufforderungen zur Verbesserung der Codequalität und der Lesbarkeit. 1) Tipps zum Skalartyp: Da Php7.0 in den Funktionsparametern wie int, float usw. angegeben werden dürfen. 3) Eingabeaufforderung für Gewerkschaftstyp: Da Php8.0 in Funktionsparametern oder Rückgabetypen angegeben werden dürfen. 4) Nullierstyp Eingabeaufforderung: Ermöglicht die Einbeziehung von Nullwerten und Handlungsfunktionen, die Nullwerte zurückgeben können.

PHP ist immer noch dynamisch und nimmt immer noch eine wichtige Position im Bereich der modernen Programmierung ein. 1) Einfachheit und leistungsstarke Unterstützung von PHP machen es in der Webentwicklung weit verbreitet. 2) Seine Flexibilität und Stabilität machen es ausstehend bei der Behandlung von Webformularen, Datenbankoperationen und Dateiverarbeitung; 3) PHP entwickelt sich ständig weiter und optimiert, geeignet für Anfänger und erfahrene Entwickler.

PHP und Python haben ihre eigenen Vor- und Nachteile, und die Wahl hängt von den Projektbedürfnissen und persönlichen Vorlieben ab. 1.PHP eignet sich für eine schnelle Entwicklung und Wartung großer Webanwendungen. 2. Python dominiert das Gebiet der Datenwissenschaft und des maschinellen Lernens.

PHP eignet sich für die Webentwicklung, insbesondere für die schnelle Entwicklung und Verarbeitung dynamischer Inhalte, ist jedoch nicht gut in Anwendungen auf Datenwissenschaft und Unternehmensebene. Im Vergleich zu Python hat PHP mehr Vorteile in der Webentwicklung, ist aber nicht so gut wie Python im Bereich der Datenwissenschaft. Im Vergleich zu Java wird PHP in Anwendungen auf Unternehmensebene schlechter, ist jedoch flexibler in der Webentwicklung. Im Vergleich zu JavaScript ist PHP in der Back-End-Entwicklung präziser, ist jedoch in der Front-End-Entwicklung nicht so gut wie JavaScript.
