In Drupal 7 kann ich ein Modul in einem anderen Modul haben. Ist dies in Drupal 8 immer noch der Fall und wie würde ich Namespace-Klassen innerhalb des Submoduls verwenden?
In Drupal 7 kann ich auch Unterordner im Ordner modules erstellen, um meine Module zu gruppieren.
Beispiel:
sites
--- / all
--- / --- / modules
--- / --- / --- / Collection_Alpha
--- / --- / --- / --- / module_a
--- / - - / --- / --- / module_b
--- / --- / --- / Collection_Beta
--- / --- / --- / --- / module_x
--- / --- / --- / --- / module_y
Ist das in Drupal 8 noch möglich? Wenn ja, wie müsste ich meinen Klassen einen Namespace zuweisen, damit der Autoloader ihn in die richtige Ordnerstruktur auflösen kann?
zB: Drupal \ Collection_Alpha \ module_a \ myClass1?
Drupal\my_module
in 'my_module / src', das Untermodul befindet sichDrupal\my_submodule
in 'my_module / modules / my_submodule / src' und so weiterAntworten:
@Clive ist richtig.
Der Namespace ist immer
Drupal\{module_name}
. Wo sich dieses Modul befindet, spielt keine Rolle (solange es sich irgendwo befindet, wo Drupal es finden kann). Dieser Namespace zeigt immer auf$path_to_module/src
.Es würde unmöglich anders funktionieren. Verschiedene Sites haben Module in einer unterschiedlichen Struktur und an unterschiedlichen Orten, aber der gleiche Code muss funktionieren, egal wo.
quelle
\Drupal
aus Gründen der Konsistenz beizubehalten. Aber trotzdem interessante Frage, ich möchte Sie ermutigen, es als separate Frage zu stellen. In der Tat, wenn Sie dies nicht tun, werde ich wahrscheinlich :)Die Namespaces basieren auf dem automatischen Laden von PSR-4. Überprüfen Sie die Spezifikation http://www.php-fig.org/psr/psr-4 .
Wenn Sie Submodule verwenden möchten, können Sie die nächste Ordnerstruktur verwenden. d8:
Der Namespace für das "my_module":
Der Namespace für das "my_sub_module":
Drupal\my_sub_module\Controller\B
Weitere Informationen finden Sie unter PSR-4-Namespaces und Autoloading in Drupal 8 .
quelle