Pregunta

Mi último módulo no parece estar cargando. Instalando cuando está habilitado. Aquí está el resumen:

Tengo un archivo .module implementando hook_menu() y hook_views_data().

Ambos parecen funcionar bien, después de habilitar el módulo: la navegación a la ruta del menú funciona como se esperaba y mi nuevo tipo de base de vistas está presente.

Tengo un archivo .install implementando hook_install() hook_uninstall() y hook_schema()

Ninguna de las funciones en el archivo de instalación parece ejecutarse. Las nuevas tablas no están presentes después de habilitar y no hay errores registrados.

Si llamo manualmente las funciones en el archivo .install con Devel, obtengo un error indefinido. Solo puedo suponer que el archivo de instalación no se está cargando.

Ejecutar el archivo .install a través del intérprete PHP de la línea de comandos no menciona ningún error sintáctico.

Estoy perdido para explicar por qué el archivo no se carga en el alcance cuando el módulo está habilitado.

Agradecería cualquier ayuda.

¿Fue útil?

Solución

Resulta que fue un error en hook schema() Desafortunadamente, la función falló más o menos silenciosamente. Por ejemplo :

'description' => array(
                'type' => 'varchar',
                'size' => 'normal',
                'not null' => TRUE,
                'description' => 'Description of vaule type.',
        ),

Ha fallado.

'description' => array(
                'type' => 'varchar',
                'size' => 'normal',
                'length' => 255, 
                'not null' => TRUE, 
                'default' => '',
                'description' => 'Description of vaule type.',
        ),

Trabajó.

El problema fue exacerbado por mi noción asumida erróneamente de que deshabilitar y volver a habilitar un módulo activaría la instalación, en lugar de la eliminación del módulo de la tabla del sistema.

Gracias nuevamente a todos los que proporcionaron comentarios.

Otros consejos

Si agregó el archivo de instalación después de habilitar el módulo: deshabilite el módulo, desinstale el módulo, entonces habilite el módulo.

hook_install() se ejecuta solo la primera vez que se habilita un módulo y si está habilitado después de desinstalarse.

Solo quiero agregar esta respuesta para referencia futura, ya que mi archivo de información.

Había definido algunas funciones de actualización, por ejemplo, Hook_Update_7101, pero cuando navegé para actualizar.php decía 'no hay actualizaciones pendientes'. Agregué algunas declaraciones de depuración y descubrí que mis funciones no aparecían cuando se realizó la llamada a get_defined_functions () (esta es una función PHP). Era como si PHP no fuera consciente de las funciones de actualización.

Resulta que había dos versiones de mi módulo en Drupal. Uno AT/Sites/All/Módulos y otro AT/Sites/Sitename/Modules. Entonces, la versión anterior del módulo en Sites/Sitename estaba anulando mi versión más nueva en Sites/All.

Así que en resultado es:

Check whether there are 2 versions of your module - one at sites/all/modules and another at sites/sitename/modules

¡Eliminé la versión anterior del formulario del módulo /sitios /Sitename y las actualizaciones aparecieron como se esperaba!

El archivo de instalación solo se carga durante el proceso de instalación, actualización o para verificar los requisitos del módulo. La carga de archivos a pedido (cuando se necesitan) guarda el tiempo para la ejecución, la memoria y el rendimiento general.

Para incluir el archivo de instalación de su módulo, primero debe incluirlo, por ejemplo:

module_load_include('install', 'my_module');
Licenciado bajo: CC-BY-SA con atribución
No afiliado a drupal.stackexchange
scroll top