Comparatif Drupal 7 et 8 : page hello world

Voici les différences entre un module « hello world » le plus simple possible, entre Drupal 7 (code source) et Drupal 8 (code source).

Drupal 7 Drupal 8
hello.info hello.info.yml
name = Hello world
description = Minimanlist Hello World in Drupal 7
package = helloworld
core = 7.x
files[] = hello.module
name: Hello World module
type: module
description: An Hello World module showing D8 capabilites
package: Example modules
core: 8.x
hello.module hello.module
<?php

function hello_menu() {

  $items = array(
      'hello_world' => array(
        'title' => 'Hello world',
        'page callback' => '_page_hello_world',
        'access callback' => TRUE,
      ),
    );

  return $items;
}

function _page_hello_world() {
  return array(    '#markup' => '<p>Hello world page text (from module) !</p>' );
}
<?php
function hello_menu() {
  $items['hello'] = array(
    'title' => 'Hello Page',
    'route_name' => 'hello.world',
  );
  return $items;
}
 hello.routing.yml
# hello.routing.yml
hello.world:
  path: 'helloworld'
  defaults:
    _content: '\Drupal\hello\HelloRouteController::index'
  requirements:
    _permission: 'access content'
 /lib/Drupal/hello/HelloRouteController.php
<?php

namespace Drupal\hello;

class HelloRouteController {

  public function index() {
    return array('#markup' => 'Hello workd page text (from controller) !');
  }

}

Comme on peut le voir, le .info est convertit en fichier YAML .info.yml. Pas de grosses différences à ce stade.

Par contre le .module est éclaté en 3 parties. Le hook_menu persiste mais est scindé en 2. Le routing se fait maintenant dans un fichier .routing.yml. Il ne reste plus que la définition du titre du menu dans le module. La callback est quand à elle transformée en controller. En effet, le système de menu de Drupal 7 est remplacé par le routing Symfony2. C’est plus compliqué à écrire, mais c’est aussi plus puissant.

 

Rejoindre la conversation

2 commentaires

    1. Drupal 8 est un gros changement, à tous les niveaux (utilisateur, développeur, chef de projet). Il faut s’attendre à un choc (toute proportion gardée).
      Ceci dit, il est très prometteur aussi malgré les difficultés que la communauté rencontre en ce moment pour le sortir.

      PS : j’aime beaucoup le design de votre site.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *