Frage

Mein neuestes Modul scheint nicht zu laden, wenn es aktiviert ist. Hier ist der Überblick:

Ich habe eine .moduledatei implementiert hook_menu() und hook_views_data().

Beide scheinen gut zu funktionieren, nachdem das Modul aktiviert ist: Navigation zum Menüpfad funktioniert wie erwartet und mein neuer Anblickbasistyp ist vorhanden.

Ich habe eine .Install -Datei implementieren hook_install() hook_uninstall() und hook_schema()

Keine der Funktionen in der Installationsdatei scheint ausgeführt zu werden. Die neuen Tabellen sind nach Aktivierung nicht vorhanden und es gibt keine Fehler angemeldet.

Wenn ich die Funktionen in der .Install -Datei mit Devel manuell aufrufe, erhalte ich einen undefinierten Fehler. Ich kann nur annehmen, dass die Installationsdatei nicht geladen wird.

Das Ausführen der .Install -Datei über die Befehlszeile -PHP -Interpreter wird keine syntaktischen Fehler angezeigt.

Ich bin ratlos zu erklären, warum die Datei nicht in den Umfang geladen ist, wenn das Modul aktiviert ist.

Ich würde mich über jede Hilfe freuen.

War es hilfreich?

Lösung

Es stellte sich heraus, dass es ein Fehler in war hook schema() Leider ist die Funktion mehr oder weniger still gescheitert. Zum Beispiel :

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

Gescheitert.

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

Hat funktioniert.

Das Problem wurde durch meine fälschlicherweise angenommene Vorstellung verschärft, dass die Deaktivierung und Wiedereinstellung eines Moduls die Installation auslösen würde, anstatt das Entfernen des Moduls aus der Systemtabelle.

Nochmals vielen Dank an alle, die Feedback gegeben haben.

Andere Tipps

Wenn Sie die Installationsdatei hinzugefügt haben, nachdem Sie das Modul aktiviert haben: Deaktivieren Sie das Modul, deinstallieren Sie das Modul und aktivieren Sie das Modul.

hook_install() wird nur ausgeführt, wenn ein Modul zum ersten Mal aktiviert ist und wenn es nach der Deinstallation aktiviert ist.

Ich möchte diese Antwort nur als zukünftige Referenz hinzufügen, da meine .Install -Datei nicht geladen wurde, und ich habe eine Weile gebraucht, um herauszufinden, was los war. Hoffentlich kann dies jemandem etwas Schmerzen ersparen!

Ich hatte einige Aktualisierungsfunktionen definiert, z. B. Hook_UPDATE_7101, aber als ich navigierte, um zu aktualisieren. Ich habe einige Debug -Aussagen hinzugefügt und festgestellt, dass meine Funktionen nicht angezeigt wurden, wenn der Anruf bei get_defined_functions () gemacht wurde (dies ist eine PHP -Funktion). Es war, als würde PHP die Update -Funktionen nicht bewusst.

Es stellt sich heraus, dass es zwei Versionen meines Moduls in Drupal gab. Eins an/seiten/alle/module und ein anderer an/seiten/sitename/module. Die ältere Version des Moduls an Websites/Sitename war also meine neuere Version auf Websites/allen überschrieben.

Also unter Fazit:

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

Ich habe die ältere Version des Modulformulars /Websites /Sitename entfernt und die Updates erschienen wie erwartet!

Die Installationsdatei wird nur während der Installation geladen, aktualisieren oder die Modulanforderungen überprüfen. Das Laden von Dateien auf Bedarf (wenn sie benötigt werden) speichert die Zeit für Ausführung, Speicher und Gesamtleistung.

Um die Installationsdatei Ihres Moduls einzuschließen, können Sie sie zuerst einfügen, zum Beispiel:

module_load_include('install', 'my_module');
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit drupal.stackexchange
scroll top