Ich möchte das Systemänderungsereignis verfolgen, um sie rückgängig zu machen. Wenn ich variable_set () überprüfe, sehe ich, dass für dieses Ereignis kein Hook bereitgestellt wird. Gibt es eine Möglichkeit für mich, dies zu tun?
Ich kann Änderungen an Einstellungsformularen vornehmen, aber es gibt viele Einstellungsformulare, die verfolgt werden müssen. Wenn ich direkt an variable_set () binden kann, wird der Code viel einfacher.
Ich kann die Variablenänderungen auch mit Features + Strongarm-Modulen verfolgen, aber es ist besser, wenn der Drupal-Administrator den Variablenverlauf durchsuchen kann, ohne den Code zu berühren.
$conf
: D Ich hoffe, meine aktualisierte Antwort wird jemandem helfen.Sie könnten einen Datenbank-Trigger verwenden, der schneller als Code wäre.
Hier ist das MySQL-Dokument .
Erstellen Sie eine Tabelle zum Speichern alter Werte
Erstellen Sie Ihre Trigger, einen zum Einfügen und einen zum Aktualisieren:
Jetzt zeichnen alle Ihre Aktualisierungen und Einfügungen alte Werte in variable_backup auf.
quelle
Wie Sie im Quellcode sehen können, werden
variable_set()
keine Hooks oder Änderungen angefordert, z. B. nomodule_invoke_all()
oderdrupal_alter()
Aufrufe.Möglicherweise können Sie die
db_merge()
Abfrage jedoch mit einer speziell platzierten Abfrage abhörenhook_query_alter()
und dort zusätzliche Verarbeitungen vornehmen. Wie von Molot hervorgehoben, ist es jedochhook_query_alter()
unwahrscheinlich, dass Sie auf diedb_merge()
Abfrage abzielen können .Alternativ können Sie möglicherweise einen Snapshot der Variablentabelle erstellen, um sie von früheren Revisionen dieser Tabelle zu unterscheiden, oder eine andere Form des Speichers für variable Revisionen implementieren, mit der Sie vergleichen können.
quelle
QueryAlterableInterface
ist in der Tat vonQuery
selbst implementiert . Aber in 8 wird das Konfigurationsmanagement trotzdem neu aufgebaut. Und in 7 sind meines Erachtens nur markierte ausgewählte Abfragen änderbar. Aber vielleicht fehlt mir etwas?Ich habe ein Feature Request-Ticket auf Drupal.org geöffnet, um Hooks zum Abfangen des Einstellens und Löschens von Systemvariablen zu erstellen, und habe einen Kern-Patch dafür zur Überprüfung eingereicht! Bitte sehen Sie:
https://www.drupal.org/project/drupal/issues/2934718
quelle