W Drupal 7 używaliśmy hook_schema()pliku .install do utworzenia tabeli. Wierzę, że w Drupal 8 możesz to również zrobić, ale miałem wrażenie, że powinieneś utworzyć pliki .yml ze swoim schematem.
Nie, masz rację. hook_schemajest wciąż sposobem na tworzenie niestandardowych tabel w Drupal 8, które nie są opisywane przez jednostki treści ani pola . Jeśli twoja niestandardowa tabela jest czymś, co uważasz za „treść”, wtedy użyłbym encji, ale jeśli musi być szybszy i będzie miał ograniczoną liczbę wierszy, a ty nie buforujesz w interfejsie, to tabela niestandardowa jest w porządku. Należy również rozważyć, czy ta tabela jest „konfiguracją”, w którym to przypadku należy przejść do encji konfiguracyjnej lub obiektu.
mradcliffe
Odpowiedzi:
10
hook_schema()jest nadal używany z modułów Drupal 8 do tworzenia niestandardowych tabel baz danych używanych z modułu. Nawet użytkownika i moduły Node wdrożyć go, chociaż user_schema()i node_schema()nie definiują schematu dla poszczególnych podmiotów, które są tworzone w inny sposób.
Schematu konfiguracja nie jest używany do tworzenia niestandardowych tabel bazy danych do zastosowań modułu, ale opisuje strukturę plików konfiguracyjnych. Plik PDF znaleziony w dołączonej dokumentacji wyjaśnia związek między plikiem konfiguracyjnym a jego schematem.
Podmioty treści nie używają hook_schema(); Drupal tworzy dla nich tabelę bazy danych w oparciu o pola podstawowe zdefiniowane przez klasę encji treści.
Wybór metody zależy od definicji modułu. To moduł definiuje encję treści, encję konfiguracji lub po prostu korzysta z niestandardowej tabeli. Moduł może nawet korzystać z nich wszystkich.
Możesz użyć hook install, aby utworzyć własne tabele, jeśli naprawdę chcesz, chociaż Drupal ma wiele innych gotowych rozwiązań. Ale jeśli chcesz utworzyć własny, w module przykładów jest moduł przykładowy o nazwie dbtng_example: https://www.drupal.org/project/examples , wraz z routingiem służącym do dodawania i usuwania niestandardowych wpisów bazy danych.
Polecam zainstalować i wypróbować, a następnie możesz użyć tego jako podstawy do stworzenia własnej tabeli bazy danych w Drupal 8.
Innym podejściem do rozważenia jest utworzenie encji konfiguracji lub encji treści.
Jeśli używasz narzędzia wiersza poleceń drupal, istnieje nawet polecenie do wygenerowania tych „drupal wygenerować: encja: konfiguracja” i „drupal wygenerować: encja: treść”.
Również w module przykładów znajduje się config_entity_example i content_entity_example.
Istnieje kilka innych gotowych rozwiązań, takich jak moduł config_pages, który pozwala łatwo rozdzielić miejsca do przechowywania danych w Twojej witrynie:
https://www.drupal.org/project/config_pages
Ostatnio wykorzystaliśmy je jako jednorazowe strony docelowe, tworząc kontroler i trasę. Ma to ogromną przewagę nad tabelą niestandardową, ponieważ można łatwo dodawać nowe pola i można z łatwością używać typów danych, takich jak obrazy i odwołania do encji, można także ustawiać formatyzatory pól i ładować dane sformatowane za pomocą konstruktora widoku encji config_pages.
hook_schema
jest wciąż sposobem na tworzenie niestandardowych tabel w Drupal 8, które nie są opisywane przez jednostki treści ani pola . Jeśli twoja niestandardowa tabela jest czymś, co uważasz za „treść”, wtedy użyłbym encji, ale jeśli musi być szybszy i będzie miał ograniczoną liczbę wierszy, a ty nie buforujesz w interfejsie, to tabela niestandardowa jest w porządku. Należy również rozważyć, czy ta tabela jest „konfiguracją”, w którym to przypadku należy przejść do encji konfiguracyjnej lub obiektu.Odpowiedzi:
hook_schema()
jest nadal używany z modułów Drupal 8 do tworzenia niestandardowych tabel baz danych używanych z modułu. Nawet użytkownika i moduły Node wdrożyć go, chociażuser_schema()
inode_schema()
nie definiują schematu dla poszczególnych podmiotów, które są tworzone w inny sposób.Schematu konfiguracja nie jest używany do tworzenia niestandardowych tabel bazy danych do zastosowań modułu, ale opisuje strukturę plików konfiguracyjnych. Plik PDF znaleziony w dołączonej dokumentacji wyjaśnia związek między plikiem konfiguracyjnym a jego schematem.
Podmioty treści nie używają
hook_schema()
; Drupal tworzy dla nich tabelę bazy danych w oparciu o pola podstawowe zdefiniowane przez klasę encji treści.Wybór metody zależy od definicji modułu. To moduł definiuje encję treści, encję konfiguracji lub po prostu korzysta z niestandardowej tabeli. Moduł może nawet korzystać z nich wszystkich.
źródło
Możesz użyć hook install, aby utworzyć własne tabele, jeśli naprawdę chcesz, chociaż Drupal ma wiele innych gotowych rozwiązań. Ale jeśli chcesz utworzyć własny, w module przykładów jest moduł przykładowy o nazwie dbtng_example: https://www.drupal.org/project/examples , wraz z routingiem służącym do dodawania i usuwania niestandardowych wpisów bazy danych.
Polecam zainstalować i wypróbować, a następnie możesz użyć tego jako podstawy do stworzenia własnej tabeli bazy danych w Drupal 8.
Innym podejściem do rozważenia jest utworzenie encji konfiguracji lub encji treści.
Jeśli używasz narzędzia wiersza poleceń drupal, istnieje nawet polecenie do wygenerowania tych „drupal wygenerować: encja: konfiguracja” i „drupal wygenerować: encja: treść”.
Również w module przykładów znajduje się config_entity_example i content_entity_example.
Od https://www.previousnext.com.au/blog/understanding-drupal-8s-config-entities : „Główną różnicą między treścią a encjami konfiguracyjnymi jest sposób ich przechowywania i (obecnie) encje konfiguracyjne nie są dostępne „.
Istnieje kilka innych gotowych rozwiązań, takich jak moduł config_pages, który pozwala łatwo rozdzielić miejsca do przechowywania danych w Twojej witrynie: https://www.drupal.org/project/config_pages
Ostatnio wykorzystaliśmy je jako jednorazowe strony docelowe, tworząc kontroler i trasę. Ma to ogromną przewagę nad tabelą niestandardową, ponieważ można łatwo dodawać nowe pola i można z łatwością używać typów danych, takich jak obrazy i odwołania do encji, można także ustawiać formatyzatory pól i ładować dane sformatowane za pomocą konstruktora widoku encji config_pages.
źródło