it-swarm.com.de

Funktionsname, der von einem anderen Modul über drupal_alter aufgerufen werden soll?

Ich muss die Daten eines Contrib-Moduls ändern, das einen Aufruf von drupal_alter('workbench_access_user', $access, $account); ausführt.

Wie muss meine Funktion aussehen? Der Name meines Moduls lautet workbench_access_crud_by_state.

Ist folgendes in Ordnung? Was ist mit den Parametern? Ich bin verwirrt über das Daten- und Kontextmaterial .

function workbench_access_crud_by_state_workbench_access_user_alter($access, $account) {
  //do sth
  $bla = 'test';
  debug($bla);
}

Es scheint, dass meine Hook-Implementierung überhaupt nicht aufgerufen wird und es keine Fehlermeldungen gibt.

6
groovehunter

Einer Hook-Implementierung wird immer der Kurzname des Moduls vorangestellt, das sie implementiert. Nach dem Ändern von Hooks muss _alter angehängt werden. In Ihrem Fall ist workbench_access_crud_by_state_workbench_access_user_alter($access, $account) die richtige Signatur für diese Alter-Hook-Implementierung, da workbench_access_crud_by_state der Computername des Moduls ist.

Für die Parameter akzeptiert drupal_alter():

  • $type Ist der Typ des Alter Hooks ohne den Teil _alter. in Ihrem Fall ist das workbench_access_user

  • &$data Ist die Referenz auf die Variable, die den zu ändernden Wert enthält

Es gibt drei weitere Parameter, die optional sind und normalerweise verwendet werden, um der ausgeführten Operation einen Kontext zu geben.

In Drupal 8) wird der Aufruf von drupal_alter() durch einen Aufruf von \Drupal::moduleHandler()->alter() ersetzt; in diesem Fall der Nummer der Kontextparameter wurde auf 2 reduziert.

8
kiamlaluno