Da ich nicht genug Kredit habe, um einen Kommentar abzugeben, werde ich ihn hier einfügen:
@Berdir, es scheint mir, dass das Erzwingen des Moduls in der Datei node.type.custom.yml nicht ausreicht, um das Löschen der Knoten bei der Deinstallation zu erzwingen
Beachten Sie, dass Benutzer alle Inhalte dieses Typs löschen müssen, bevor sie das Modul anschließend deinstallieren können
In meinem Fall wird der Inhaltstyp bei der Deinstallation des Moduls gelöscht. Das Löschen des benutzerdefinierten Inhalts (der Knoten) wird jedoch nicht erzwungen. Um dies zu erreichen, sollte das benutzerdefinierte Modul das implementieren ModuleUninstallValidatorInterface
.
Nach der Implementierung kann das benutzerdefinierte Modul nicht deinstalliert werden, bevor die benutzerdefinierten Knoten gelöscht wurden. Das Auswahlfeld wird deaktiviert.
Anstatt das Interface zu implementieren, mache ich es unsauber, indem ich die Knoten lösche in hook_uninstall()
:
function MYMODULE_uninstall() {
// Delete custom_type nodes when uninstalling.
$query = \Drupal::entityQuery('node')
->condition('type', 'custom_type');
$nids = $query->execute();
// debug($nids);
foreach ($nids as $nid) {
\Drupal\node\Entity\Node::load($nid)->delete();
}
}
bundle
der folgenden Antworten gelöschtMACHINE_NAME_OF_TYPE
, wie dies bei der auf Knoten-IDs basierenden Antwort der Fall ist oder nicht? Ich meine, das scheint etwas teuer zu sein (wenn es viele NIDs gibt) und ich würde diese Lösung gerne verwenden, wenn es möglich ist.