logo

Extra Block Types (EBT) - Nuova esperienza con Layout Builder❗

Extra Block Types (EBT) - tipi di blocchi stilizzati e personalizzabili: Slideshows, Tabs, Cards, Accordion e molti altri. Impostazioni integrate per sfondo, DOM Box, plugin javascript. Vivi oggi il futuro della costruzione dei layout.

Demo moduli EBT Scarica moduli EBT

❗Extra Paragraph Types (EPT) - Nuova esperienza con Paragraphs

Extra Paragraph Types (EPT) - insieme di moduli basati su paragrafi in modo analogo.

Demo moduli EPT Scarica moduli EPT

Scorri

Creazione di una pagina in un modulo Drupal in modo programmatico

04/10/2025, by Ivan

Menu

Ci sono due passaggi per creare una semplice pagina in Drupal:

Dichiarare la route e i suoi parametri.

Questo passaggio include il titolo della pagina, i requisiti di accesso alla pagina e altro.

In Drupal 7 era necessario implementare hook_menu().

In Drupal 8 si crea invece un file <module_name>.routing.yml nella directory principale del modulo.

Scrivere il codice per restituire il contenuto della pagina.

In Drupal 7 si scriveva una funzione callback della pagina, indicata in hook_menu().

In Drupal 8 il callback della pagina deve essere un metodo di una classe o un servizio registrato. Può differire a seconda delle condizioni (HTTP o HTTPS, intestazioni di contenuto, ecc.), ma ciò va oltre questo livello introduttivo.

Procedura

Seguendo l’esempio in questa pagina, sarai in grado di creare una semplice pagina nel tuo modulo personalizzato senza dover approfondire l’interno di Drupal. Per ulteriori dettagli consulta la Change record sulla modifica del sistema di routing e le varie implementazioni nel core e nel progetto Examples.

File di routing YAML per il modulo di esempio

Le informazioni di routing sono memorizzate in example/example.routing.yml:

example.my_page:
  path: '/mypage/page'
  defaults:
    _controller: '\Drupal\example\Controller\ExampleController::myPage'
    _title: 'My first page in D8'
  requirements:
    _permission: 'access content'

example.my_page

  • Questo è il nome macchina della route. Per convenzione, i nomi macchina delle route dovrebbero essere module_name.sub_name. Quando altre parti del codice devono fare riferimento alla route, utilizzeranno questo nome macchina.

path

  • Questo definisce il percorso della pagina sul tuo sito. Nota lo slash iniziale (/).

defaults

  • Descrive il callback della pagina e il titolo. @todo: Dove possono essere sovrascritti questi valori predefiniti?

requirements

  • Definisce le condizioni con cui la pagina sarà visualizzata. Puoi specificare permessi, moduli che devono essere abilitati e altre condizioni.

Implementazione della pagina per il modulo di esempio

La classe Controller ExampleController deve essere definita in example/src/Controller/ExampleController.php:

<?php
namespace Drupal\example\Controller;

use Drupal\Core\Controller\ControllerBase;

/**
 * Provides route responses for the Example module.
 */
class ExampleController extends ControllerBase {

  /**
   * Returns a simple page.
   *
   * @return array
   *   A simple renderable array.
   */
  public function myPage() {
    $element = array(
      '#markup' => 'Hello, world',
    );
    return $element;
  }

}

namespace

  • Qui si dichiara il prefisso necessario per definire completamente il nome della classe che stiamo creando. Confronta il blocco di documentazione e il nome della classe. L’autoloader sa che per cercare la classe \Drupal\example\Controller\ExampleController deve individuare il file modules/example/src/Controller/ExampleController.php.

use

  • Ci consente di usare ControllerBase invece del nome completo della classe. Questo rende la dichiarazione della classe più leggibile.

myPage()

  • Il metodo specificato nel file YAML deve essere pubblico. Deve restituire un array renderizzabile.