En Drupal 7 puedo tener un módulo dentro de otro módulo. ¿Sigue siendo el caso en Drupal 8 y cómo haría yo las clases de espacio de nombres dentro del submódulo?
Otra cosa que puedo hacer en Drupal 7 es crear subcarpetas dentro de la carpeta de módulos para agrupar mis módulos.
Ejemplo:
sitios
--- / all
--- / --- / modules
--- / --- / --- / Collection_Alpha
--- / --- / --- / --- / module_a
--- / - - / --- / --- / module_b
--- / --- / --- / Collection_Beta
--- / --- / --- / --- / module_x
--- / --- / --- / --- / module_y
¿Sigue siendo posible en Drupal 8? En caso afirmativo, ¿cómo tendría que asignar un espacio de nombres a mis clases para que el autocargador pueda resolverlo en la estructura de carpetas correcta?
por ejemplo: Drupal \ Collection_Alpha \ module_a \ myClass1?
Drupal\my_module
en 'my_module / src', el submódulo estaráDrupal\my_submodule
en 'my_module / modules / my_submodule / src', y así sucesivamenteRespuestas:
@Clive es correcto.
El espacio de nombres es siempre
Drupal\{module_name}
. Donde vive ese módulo es irrelevante (siempre y cuando sea en algún lugar donde Drupal pueda encontrarlo). Ese espacio de nombres siempre apunta a$path_to_module/src
.Posiblemente no funcionaría de otra manera. Diferentes sitios tienen módulos en una estructura diferente y diferentes lugares, pero el mismo código tiene que funcionar sin importar dónde.
fuente
\Drupal
el nombre por razones de coherencia. Pero una pregunta interesante, no obstante, le animo a que la haga como una pregunta separada. De hecho, si no lo haces, probablemente lo haré :)Los espacios de nombres se basan en la carga automática de PSR-4, consulte la especificación http://www.php-fig.org/psr/psr-4 .
Si desea submódulos, puede usar la siguiente estructura de carpetas. d8:
El espacio de nombres para el "my_module":
El espacio de nombres para el "my_sub_module":
Drupal\my_sub_module\Controller\B
Consulte los espacios de nombres PSR-4 y la carga automática en Drupal 8 para obtener más información.
fuente