Table des matières
Comment créer un module?
Où est le lien de menu?
Conclusion
Comment ajouter un lien de menu à ma page personnalisée Drupal 8?
Comment créer une forme dans Drupal 8?
Comment créer des blocs dans Drupal 8?
Comment créer un formulaire de configuration dans Drupal 8?
Comment créer une page d'administration dans Drupal 8?
Comment créer un thème dans Drupal 8?
Comment créer un type de champ personnalisé dans Drupal 8?
Maison développement back-end tutoriel php Créez un module Drupal 8: routage, contrôleurs et liens de menu

Créez un module Drupal 8: routage, contrôleurs et liens de menu

Feb 21, 2025 am 09:45 AM

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

Points de base

  • DRUPAL 8 passe de la programmation procédurale à l'architecture orientée objet et intègre le code d'autres sources par le biais du programme fièrement trouvé ailleurs, y compris des ajouts importants tels que les composants Symfony.
  • La création d'un module Drupal 8 nécessite de définir la structure du dossier et les fichiers nécessaires, tels que .info.yml fichiers. Les dossiers personnalisés et des modules de contribution sont désormais directement sous le répertoire racine modules/, et le code de base est déplacé vers un dossier séparé core/.
  • "routage" dans Drupal 8 remplace la fonction hook_menu() dans Drupal 7, en tirant parti du composant Symfony2. Cela implique de définir l'itinéraire comme une configuration et de gérer la fonction de rappel dans le contrôleur. Le fichier de routage du module demo.routing.yml est créé dans le dossier racine du module.
  • Le lien de menu n'est plus traité via hook_menu(), mais est déclaré comme une configuration dans le fichier yml. Créez un fichier nommé demo.menu_links.yml dans le répertoire racine du module pour définir le lien de menu et son emplacement dans le menu existant du site.

Notez que puisque Drupal 8 est toujours en développement au moment de la rédaction, une partie du code peut être obsolète. Veuillez vous référer à la base de code que j'ai essayé de mettre à jour l'exemple de code et de le rendre compatible avec la dernière version Drupal 8.

Drupal 8 introduit de nombreux changements, cherchant à l'aligner avec d'autres cadres PHP modernes. Cela signifie que l'ancienne programmation procédurale de style PHP 4 a été largement remplacée par une architecture orientée objet. Pour y parvenir, dans le cadre du programme fièrement trouvé ailleurs, Drupal 8 contient du code qui n'est pas spécifiquement développé pour Drupal.

L'un des ajouts les plus importants à Drupal est la composante Symfony, qui a deux impacts majeurs sur les développeurs de Drupal. Premièrement, il a le potentiel d'augmenter considérablement le nombre de développeurs qui souhaitent se développer pour Drupal maintenant. Deuxièmement, il a laissé certaines préoccupations à certains développeurs de Drupal 7 qui manquent d'expérience de pratique PHP moderne. Mais ça va, nous apprenons tous, l'expérience que nous avons apprise des cadres comme Symfony (et, espérons-le, Drupal 8) sera facilement étendu et appliqué à d'autres cadres PHP.

Pendant ce temps, Drupal 8 est dans les stades tardifs de son cycle de publication, avec la version actuelle au moment de la rédaction d'Alpha11. Nous utiliserons cette version pour présenter quelques changements de base dans le développement de modules que les développeurs Drupal 7 rencontreront d'abord et devraient être familiers avec. J'ai configuré une base de code GIT où vous pouvez trouver le code que j'ai écrit dans cette série, et si vous préférez, vous pouvez suivre et apprendre comme ça.

Comment créer un module?

La première chose sur laquelle nous devons nous concentrer est de définir les structures et les fichiers de dossiers nécessaires afin que Drupal 8 puisse comprendre nos nouveaux modules. Dans Drupal 7, nous devons créer au moins deux fichiers (.info et .module), mais dans Drupal 8, la version YAML de l'ancienne est suffisante. Oui, le fichier .info est désormais remplacé par le fichier .info.yml, contenant des données similaires, mais avec différentes structures.

Un autre grand changement est que les dossiers personnalisés et des modules de contribution vont désormais directement dans le dossier Root Directory modules/. En effet, tout le code de base a été déplacé dans son propre dossier core/ séparé. Bien sûr, dans le répertoire modules/, il est recommandé de séparer les modules en Custom et contribution comme dans Drupal 7.

Créons un module appelé Demo (très original) et mettons-le dans le répertoire modules/custom/. Comme je l'ai mentionné, dans ce dossier demo/ nouvellement créé, nous avons d'abord besoin d'un fichier demo.info.yml contenant le contenu requis suivant:

name: Drupal 8 Demo module
description: 'Demo module for Drupal 8 alpha11'
type: module
core: 8.x
Copier après la connexion
Copier après la connexion

Vous devriez être familier avec trois des quatre paires de valeurs clés (nom, description et noyau). Le type est également une exigence maintenant, car vous pouvez également créer des fichiers YML pour le thème. Une autre chose importante à noter est que les espaces du fichier YML ont un sens et utilisent la bonne indentation pour organiser les données dans une structure de type tableau.

Vous pouvez afficher cette page de document pour des paires de valeurs clés supplémentaires qui peuvent être ajoutées au fichier module .info.yml et des instructions pour annoncer des modifications à ce format.

C'est comme ça, un fichier. Vous pouvez désormais naviguer vers la page Extensions, localiser le module de démonstration et l'activer.

Comme je l'ai mentionné, avant d'activer le module, nous n'avons plus besoin de créer un fichier .module. Architectural parlant, la taille du fichier .module sera considérablement réduite, car la plupart de la logique commerciale sera déplacée vers les classes de service, les contrôleurs et les plugins, mais nous en verrons certains plus tard.

Qu'est-ce que le "routage", et que se passe-t-il avec ses fonctions de rappel? hook_menu()

Dans Drupal 7,

est probablement le crochet le plus implémenté car il est utilisé pour définir les chemins de Drupal et connecter ces chemins à la fonction de rappel. Il est également responsable de la création de liens de menu et de nombreux autres contenus. hook_menu()

Dans Drupal 8, nous n'avons plus besoin de

parce que nous utilisons fortement les composants Symfony2 pour gérer le routage. Cela implique de définir l'itinéraire comme une configuration et de traiter la fonction de rappel dans le contrôleur (une fonction de la classe de contrôleur). Voyons comment faire cela en créant une page simple qui produit Hello World classique !. hook_menu()

Tout d'abord, nous devons créer un fichier de routage nommé

pour notre module. Ce fichier est situé dans le dossier racine du module (adjacent à demo.routing.yml). Dans ce fichier, nous pouvons avoir la définition de route (simple) suivante: demo.info.yml

name: Drupal 8 Demo module
description: 'Demo module for Drupal 8 alpha11'
type: module
core: 8.x
Copier après la connexion
Copier après la connexion

La première ligne marque le début de la création d'une nouvelle route appelée démo pour la démo du module (le premier est le nom du module et le second est le nom de la route). Sous Chemin, nous spécifions le chemin d'accès pour s'inscrire à cette route. Sous par défaut, nous avons deux choses: le titre de page par défaut (_title) et _content, qui fait référence à une fonction sur la classe Democontroller. Sous les exigences, nous spécifions les autorisations que l'utilisateur doit avoir pour afficher la page. Vous devez consulter cette page de documentation pour plus d'options que ce fichier de routage peut avoir.

Maintenant, créons notre premier contrôleur appelé DemoController, qui appellera une fonction appelée Demo () lorsque l'utilisateur demande cette page.

Dans le répertoire du module, créez un dossier nommé SRC / et créez un dossier nommé contrôleur /. Ce sera là que la classe de contrôleur sera stockée. Continuez à créer le premier: DemoController.php.

Le contrôleur et les autres classes que nous verrons plus tard dans le dossier SRC / font partie de la norme PSR-4. Initialement, nous avons dû créer une structure de dossiers plus grande (norme PSR-0), mais il y a maintenant une phase de transition où les deux fonctionnent. Donc, si vous voyez toujours le code placé dans un dossier appelé lib /, c'est PSR-0.

Dans notre fichier DemoController.php, nous pouvons maintenant déclarer notre classe:

demo.demo:
  path: '/demo'
  defaults:
    _content: '\Drupal\demo\Controller\DemoController::demo'
    _title: 'Demo'
  requirements:
    _permission: 'access content'
Copier après la connexion

C'est la quantité la plus simple et la moins à faire pour afficher quelque chose sur la page. En haut, nous spécifions l'espace de noms de classe, ci-dessous, nous déclarons la classe.

Dans la classe DemoController, nous n'avons que la fonction démo (), qui renvoie un tableau rendu similaire à Drupal 7. Ce n'est pas grave. Tout ce que nous avons à faire maintenant est d'effacer le cache et de naviguer vers le https://www.php.cn/link/1a4a5f89e71e4bb99733355c964a950b4 Drupal Page avec bonjour le monde .

Où est le lien de menu?

Dans Drupal 7, lorsque nous implémentons hook_menu(), nous pouvons également ajouter le chemin enregistré au menu pour afficher le lien de menu sur le site. Encore une fois, il n'est plus géré avec ce crochet, mais définit plutôt le lien de menu comme une configuration à l'aide du fichier YML.

Voyons comment créer un lien de menu qui apparaît dans le menu "Structure" géré. Tout d'abord, nous devons créer un fichier nommé demo.menu_links.yml dans le répertoire racine du module. Dans ce fichier YML, nous définirons le lien de menu et son emplacement dans le menu existant du site. Pour atteindre les objectifs que nous nous fixons, nous avons besoin de ce qui suit:

<?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!'),
    );
  }
}
Copier après la connexion

Nous avons encore une fois une structure YML basée sur un retrait où nous définissons d'abord le nom de la machine (démo) du lien de menu pour la démo du module (comme nous l'avons fait avec le routage). Ensuite, nous avons le titre et la description du lien, suivis du parent de ce lien (où il doit être placé) et de l'itinéraire qu'il doit utiliser.

La valeur de

le parent est le lien de menu parent (joignez son module) et pour le trouver, vous devez faire un peu de creusement dans le fichier * .meu_links.yml. Je sais que le lien "Structure" est défini dans le module System Core, donc en regardant le fichier System.Menu_links.yml, je peux déterminer le nom de ce lien.

Route_name est le nom de la machine de l'itinéraire que nous voulons utiliser pour ce lien. Nous avons déjà défini le nôtre. Avec cela, vous pouvez effacer le cache et naviguer vers le https://www.php.cn/link/6c2665d7c3ed1e5bfd8ba600f026eb55 Demo / path. bien.

Conclusion

Dans cet article, nous commençons à explorer le développement des modules dans Drupal 8. À ce stade (version Alpha11), il est temps de commencer à apprendre à utiliser les nouveaux modules de contribution de l'API et du port. Pour ce faire, j'écris mon exploration de ce nouveau cadre passionnant (Drupal 8) afin que nous puissions tous découvrir ces changements et entrer dans le travail immédiatement lorsque le jour de la sortie arrive.

Tout d'abord, nous avons appris certaines bases: comment démarrer le module Drupal 8 (fichiers, structures de dossiers, etc.) et le comparer à Drupal 7. Nous avons également appris à définir un itinéraire et une classe de contrôleur, et comment appeler une fonction via cette voie. Enfin, nous voyons comment créer un lien de menu qui utilise l'itinéraire que nous avons défini.

Dans le prochain tutoriel, nous continuerons à construire ce module et à découvrir d'autres nouvelles fonctionnalités cool que Drupal 8 utilise. Nous apprendrons à créer des blocs et à utiliser les formulaires et à configurer le système. Rendez-vous alors.

FAQ sur la construction de modules Drupal 8 (FAQ)

Quelle est la structure de base du module Drupal 8?

Le module Drupal 8 est essentiellement un ensemble de fichiers contenant certaines fonctions et est construit de manière spécifique. La structure de base comprend un fichier

(fournissant des métadonnées sur le module), un fichier .info.yml (y compris le code PHP) et d'autres fichiers facultatifs tels que .module, .css, .js, etc. Fonction de fixation. .twig Les fichiers sont obligatoires, qui définissent le nom, la description, le package, le type, le noyau et les dépendances du module. .info.yml

Comment fonctionne le système de routage dans Drupal 8?

Le système de routage de Drupal 8 est responsable de la cartographie de l'URL vers une classe de contrôleur spécifique. Il utilise le composant de routage de Symfony, qui permet des systèmes flexibles et puissants. Le système de routage utilise le fichier

pour définir des itinéraires avec des noms, des chemins de main uniques, des valeurs par défaut et des exigences. La valeur par défaut spécifie généralement la classe de contrôleur responsable de la gestion de la demande. routing.yml

Comment créer une page personnalisée dans Drupal 8?

La création d'une page personnalisée dans Drupal 8 implique de définir des itinéraires et des contrôleurs. L'itinéraire est défini dans le fichier

et mappe l'URL vers le contrôleur. Le contrôleur est une classe PHP qui renvoie un tableau rendu pour le contenu de la page. La classe de contrôleur doit être placée dans le répertoire routing.yml du module. src/Controller

Comment ajouter un lien de menu à ma page personnalisée Drupal 8?

L'ajout d'un lien de menu à votre page personnalisée implique la création d'un fichier links.menu.yml dans votre module. Ce fichier définit un lien de menu dont les propriétés incluent le titre, la description, le parent, le nom de l'itinéraire et le poids. Le nom de l'itinéraire doit correspondre au nom de route défini dans le fichier routing.yml.

Comment créer une forme dans Drupal 8?

La création d'une forme dans Drupal 8 implique la création d'une classe de formulaire qui étend la classe FormBase et implémente FormInterface. Cette classe définit les éléments de formulaire, la validation et le traitement de soumission. Le formulaire peut être affiché en le renvoyant du contrôleur.

Comment créer des blocs dans Drupal 8?

La création d'un bloc dans Drupal 8 implique la création d'une classe de bloc qui étend la classe BlockBase. Cette classe définit le contenu de bloc et d'autres propriétés. Les blocs peuvent être placés sur la page via l'interface de mise en page du bloc.

Comment créer un formulaire de configuration dans Drupal 8?

La création d'un formulaire de configuration implique la création d'une classe de formulaire qui étend la classe ConfigFormBase et implémente FormInterface. Cette classe définit les éléments de formulaire et gère le stockage et le chargement des données de configuration.

Comment créer une page d'administration dans Drupal 8?

La création d'une page administrative consiste à définir un itinéraire sous /admin et un contrôleur qui renvoie le contenu de la page. Des pages peuvent être ajoutées au menu d'administration en définissant un lien de menu avec un parent sous system.admin.

Comment créer un thème dans Drupal 8?

La création d'un sujet dans Drupal 8 implique la création d'un fichier .info.yml qui définit le nom, la description, le type, le noyau et les sujets de base. D'autres fichiers .twig, .css et .js peuvent être ajoutés pour définir des thèmes pour chaque élément.

Comment créer un type de champ personnalisé dans Drupal 8?

La création d'un type de champ personnalisé implique la création d'une classe de type de champ qui étend la classe FieldTypePluginBase. Cette classe définit les propriétés du champ et les méthodes de stockage, d'affichage et de traitement de formulaire. Les types de champs peuvent être utilisés pour les types de contenu, les utilisateurs, les commentaires et autres entités.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Grow A Garden - Guide de mutation complet
3 Il y a quelques semaines By DDD
<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1666
14
Tutoriel PHP
1273
29
Tutoriel C#
1253
24
Expliquez le hachage de mot de passe sécurisé dans PHP (par exemple, Password_Hash, Password_verify). Pourquoi ne pas utiliser MD5 ou SHA1? Expliquez le hachage de mot de passe sécurisé dans PHP (par exemple, Password_Hash, Password_verify). Pourquoi ne pas utiliser MD5 ou SHA1? Apr 17, 2025 am 12:06 AM

Dans PHP, Password_Hash et Password_verify Les fonctions doivent être utilisées pour implémenter le hachage de mot de passe sécurisé, et MD5 ou SHA1 ne doit pas être utilisé. 1) Password_hash génère un hachage contenant des valeurs de sel pour améliorer la sécurité. 2) Password_verify Vérifiez le mot de passe et assurez-vous la sécurité en comparant les valeurs de hachage. 3) MD5 et SHA1 sont vulnérables et manquent de valeurs de sel, et ne conviennent pas à la sécurité de mot de passe moderne.

PHP et Python: comparaison de deux langages de programmation populaires PHP et Python: comparaison de deux langages de programmation populaires Apr 14, 2025 am 12:13 AM

PHP et Python ont chacun leurs propres avantages et choisissent en fonction des exigences du projet. 1.Php convient au développement Web, en particulier pour le développement rapide et la maintenance des sites Web. 2. Python convient à la science des données, à l'apprentissage automatique et à l'intelligence artificielle, avec syntaxe concise et adaptée aux débutants.

PHP: un langage clé pour le développement Web PHP: un langage clé pour le développement Web Apr 13, 2025 am 12:08 AM

PHP est un langage de script largement utilisé du côté du serveur, particulièrement adapté au développement Web. 1.Php peut intégrer HTML, traiter les demandes et réponses HTTP et prend en charge une variété de bases de données. 2.PHP est utilisé pour générer du contenu Web dynamique, des données de formulaire de traitement, des bases de données d'accès, etc., avec un support communautaire solide et des ressources open source. 3. PHP est une langue interprétée, et le processus d'exécution comprend l'analyse lexicale, l'analyse grammaticale, la compilation et l'exécution. 4.PHP peut être combiné avec MySQL pour les applications avancées telles que les systèmes d'enregistrement des utilisateurs. 5. Lors du débogage de PHP, vous pouvez utiliser des fonctions telles que error_reportting () et var_dump (). 6. Optimiser le code PHP pour utiliser les mécanismes de mise en cache, optimiser les requêtes de base de données et utiliser des fonctions intégrées. 7

PHP en action: Exemples et applications du monde réel PHP en action: Exemples et applications du monde réel Apr 14, 2025 am 12:19 AM

PHP est largement utilisé dans le commerce électronique, les systèmes de gestion de contenu et le développement d'API. 1) E-commerce: Utilisé pour la fonction de panier et le traitement des paiements. 2) Système de gestion du contenu: utilisé pour la génération de contenu dynamique et la gestion des utilisateurs. 3) Développement des API: Utilisé pour le développement de l'API RESTful et la sécurité de l'API. Grâce à l'optimisation des performances et aux meilleures pratiques, l'efficacité et la maintenabilité des applications PHP sont améliorées.

Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables? Comment fonctionne la résistance au type PHP, y compris les types scalaires, les types de retour, les types d'union et les types nullables? Apr 17, 2025 am 12:25 AM

Le type PHP invite à améliorer la qualité et la lisibilité du code. 1) Conseils de type scalaire: Depuis PHP7.0, les types de données de base sont autorisés à être spécifiés dans les paramètres de fonction, tels que INT, Float, etc. 2) Invite de type de retour: Assurez la cohérence du type de valeur de retour de fonction. 3) Invite de type d'union: Depuis PHP8.0, plusieurs types peuvent être spécifiés dans les paramètres de fonction ou les valeurs de retour. 4) Invite de type nullable: permet d'inclure des valeurs nulles et de gérer les fonctions qui peuvent renvoyer les valeurs nulles.

La pertinence durable de PHP: est-elle toujours vivante? La pertinence durable de PHP: est-elle toujours vivante? Apr 14, 2025 am 12:12 AM

PHP est toujours dynamique et occupe toujours une position importante dans le domaine de la programmation moderne. 1) La simplicité de PHP et le soutien communautaire puissant le rendent largement utilisé dans le développement Web; 2) sa flexibilité et sa stabilité le rendent exceptionnelle dans la gestion des formulaires Web, des opérations de base de données et du traitement de fichiers; 3) PHP évolue et optimise constamment, adapté aux débutants et aux développeurs expérimentés.

PHP et Python: exemples de code et comparaison PHP et Python: exemples de code et comparaison Apr 15, 2025 am 12:07 AM

PHP et Python ont leurs propres avantages et inconvénients, et le choix dépend des besoins du projet et des préférences personnelles. 1.Php convient au développement rapide et à la maintenance des applications Web à grande échelle. 2. Python domine le domaine de la science des données et de l'apprentissage automatique.

PHP vs autres langues: une comparaison PHP vs autres langues: une comparaison Apr 13, 2025 am 12:19 AM

PHP convient au développement Web, en particulier dans le développement rapide et le traitement du contenu dynamique, mais n'est pas bon dans les applications de la science des données et de l'entreprise. Par rapport à Python, PHP présente plus d'avantages dans le développement Web, mais n'est pas aussi bon que Python dans le domaine de la science des données; Par rapport à Java, PHP fonctionne moins bien dans les applications au niveau de l'entreprise, mais est plus flexible dans le développement Web; Par rapport à JavaScript, PHP est plus concis dans le développement back-end, mais n'est pas aussi bon que JavaScript dans le développement frontal.

See all articles