Come faccio a creare una tabella nel modulo personalizzato


12

In Drupal 7 hook_schema()usavamo nel file .install per creare una tabella. Credo che, in Drupal 8, anche tu puoi farlo, ma avevo l'impressione che dovessi creare file .yml con il tuo schema.

Qual è il metodo per creare tabelle in Drupal 8?


3
No, hai ragione. hook_schemaè ancora il modo di creare tabelle personalizzate in Drupal 8 che non sono descritte da entità o campi di contenuto . Se la tua tabella personalizzata è qualcosa che considereresti "contenuto", utilizzerei le entità, ma se deve essere più veloce e avrà un numero limitato di righe e non stai eseguendo la memorizzazione nella cache sul front-end, allora una tabella personalizzata è ok. Dovresti anche considerare se questa tabella è "configurazione", nel qual caso un'entità di configurazione o un oggetto è la strada da percorrere.
mradcliffe,

Risposte:


9

hook_schema()viene ancora utilizzato dai moduli Drupal 8 per creare tabelle di database personalizzate utilizzate dal modulo. Anche i moduli User e Node lo implementano, sebbene user_schema()e node_schema()non definiscano lo schema per le rispettive entità, che vengono create in modo diverso.

Lo schema di configurazione non viene utilizzato per creare tabelle di database personalizzate utilizzate da un modulo, ma descrive la struttura dei file di configurazione. Il file PDF trovato nella documentazione che ho collegato chiarisce la relazione tra un file di configurazione e il suo schema.

immagine dello schermo

Le entità di contenuto non usano hook_schema(); Drupal crea per loro la tabella del database basandosi sui campi di base definiti dalla classe di entità del contenuto.

Quale metodo utilizzare dipende da ciò che definisce il modulo. Spetta al modulo definire un'entità di contenuto, un'entità di configurazione o semplicemente utilizzare una tabella personalizzata. Un modulo potrebbe persino usarli tutti.


8

Puoi usare hook install per creare le tue tabelle, se vuoi, anche se Drupal ha molte altre soluzioni pronte all'uso. Ma se vuoi creare il tuo, c'è un modulo di esempio, chiamato dbtng_example, nel modulo di esempio: https://www.drupal.org/project/examples , completo di routing per l'aggiunta e la rimozione delle voci del database personalizzate.

Ti consiglio di installarlo e provarlo, quindi puoi usarlo come base per creare la tua tabella di database in Drupal 8.

Un altro approccio da considerare è quello di creare un'entità di configurazione o un'entità di contenuto.

Se usi lo strumento da riga di comando drupal c'è persino un comando per generare questi "drupal generate: entity: config" e "drupal generate: entity: content".

Anche nel modulo degli esempi, c'è config_entity_example e content_entity_example.

Da https://www.previousnext.com.au/blog/understanding-drupal-8s-config-entities : "La principale differenza tra contenuto e entità di configurazione è il modo in cui sono archiviate e (al momento) le entità di configurazione non sono campi ".

Esistono altre soluzioni pronte all'uso, come il modulo config_pages che ti consentono di individuare facilmente i luoghi in cui archiviare i dati sul tuo sito: https://www.drupal.org/project/config_pages

Di recente li abbiamo usati per pagine di destinazione una tantum, creando un controller e un percorso. Questo ha un enorme vantaggio rispetto a una tabella personalizzata in quanto puoi facilmente aggiungere nuovi campi e puoi usare facilmente tipi di dati come immagini e riferimenti di entità, puoi anche impostare i formattatori di campo e caricare i dati formattati usando il builder config_pages.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.