Ich entwerfe ein neues Modul in Drupal 8. Es ist ein langfristiges Projekt, das zumindest für ein paar Monate nicht veröffentlicht wird, also benutze ich es, um herauszufinden, was es Neues gibt.
In diesem Modul möchte ich programmgesteuert Knoten erstellen können. In Drupal 7 würde ich dies tun, indem ich das Objekt erstelle und dann "node_submit" und "node_save" aufrufen würde.
Diese Funktionen sind in Drupal 8 nicht mehr vorhanden. Stattdessen heißt es in der Dokumentation: "Module und Skripts können Knoten programmatisch mit dem üblichen Formular-API-Muster senden." Ich bin ratlos. Was bedeutet das? Ich habe die Formular-API verwendet, um Formulare in Drupal 7 zu erstellen, aber ich verstehe nicht, was die Dokumente hier sagen.
Ich möchte programmatisch mindestens einen und möglicherweise mehrere neue Knoten erstellen, basierend auf Informationen, die nicht direkt aus einem vom Benutzer bereitgestellten Formular stammen. Ich muss in der Lage sein:
1) Geben Sie den Inhaltstyp
an2) Geben Sie den URL-Pfad an
3) Legen Sie alle anderen notwendigen Variablen fest, die zuvor vom jetzt veralteten node_object_prepare ()
verarbeitet wurden4) Übernehmen Sie das neue Knotenobjekt
Ich würde es vorziehen, dies in einer unabhängigen, stark abstrahierten Funktion zu tun, die nicht an einen bestimmten Block oder eine bestimmte Form gebunden ist.
Also, was fehlt mir?
Die D8-Version von devel / devel_generate hat ein gutes Beispiel dafür.
Von devel_generate :
%Vor%Die Verwendung von grep mit Vorher / Nachher-Codezeilen hat mir geholfen, herauszufinden, wie man einen Knoten mit 'full_html' hinzufügt.
Suchen Sie den Drupal-Kerncode mit diesem:
%Vor%Öffnen Sie dann /tmp/temp-grep.txt in einem Texteditor. Stochern Sie ein bisschen herum und Sie werden das sehen:
%Vor%Beachten Sie, dass "body" nun zu einem Array mit einem "Wert" und einem "Format" wird.