W Drupal 7 mogę mieć moduł wewnątrz innego modułu. Czy tak jest nadal w przypadku Drupala 8 i jak miałbym klas przestrzeni nazw wewnątrz podmodułu?
Inną rzeczą, którą mogę zrobić w Drupal 7, jest utworzenie podfolderów w folderze modułów, aby pogrupować moje moduły.
Przykład:
strony
--- / wszystkie
--- / --- / moduły
--- / --- / --- / Collection_Alpha
--- / --- / --- / --- / module_a
--- / - - / --- / --- / module_b
--- / --- / --- / Collection_Beta
--- / --- / --- / --- / module_x
--- / --- / --- / --- / module_y
Czy jest to nadal możliwe w Drupal 8? Jeśli tak, w jaki sposób musiałbym przestrzeni nazw moich klas, aby autoloader mógł rozwiązać to do właściwej struktury folderów?
np .: Drupal \ Collection_Alpha \ module_a \ myClass1?
Drupal\my_module
w „moim_module / src”, podmoduł będzieDrupal\my_submodule
w „moim_module / modułów / moim_submodule / src” i tak dalejOdpowiedzi:
@Clive jest poprawny.
Przestrzeń nazw jest zawsze
Drupal\{module_name}
. To, gdzie mieszka ten moduł, nie ma znaczenia (o ile Drupal może go znaleźć). Ta przestrzeń nazw zawsze wskazuje$path_to_module/src
.Nie działałoby to w żaden inny sposób. Różne witryny mają moduły o innej strukturze i różnych miejscach, ale ten sam kod musi działać bez względu na to, gdzie.
źródło
\Drupal
dla zachowania spójności. Jednak interesujące pytanie, zachęcam do zadawania go jako osobnego pytania. W rzeczywistości, jeśli nie, prawdopodobnie będę :)Przestrzenie nazw oparte są na autoloadie PSR-4, sprawdź specyfikację http://www.php-fig.org/psr/psr-4 .
Jeśli chcesz podmoduły, możesz użyć następnej struktury folderów. d8:
Przestrzeń nazw dla „mojego_modułu”:
Przestrzeń nazw dla „mojego_sub_modułu”:
Drupal\my_sub_module\Controller\B
Aby uzyskać więcej informacji, zobacz Przestrzenie nazw PSR-4 i automatyczne ładowanie w Drupal 8 .
źródło