2017-08-17 3 views
0

Wir haben ein bestehendes benutzerdefiniertes Modul für unsere Drupal 8-Anwendung, das einen Inhaltstyp und eine Ansicht erstellt hat. Das "Nachrichten" -Modul läuft in unserer Produktionsumgebung einwandfrei; viele Teile des Inhalts wurden damit erstellt.Drupal 8 hook_update_n Codebeispiel erforderlich

Jetzt wurden Erweiterungen angefordert: 2 neue Felder und eine Änderung der Ansicht. Ich habe die Änderungen über die Admin-Benutzeroberfläche in unserer Entwicklungsumgebung vorgenommen, muss diese Änderungen jedoch in den Code des Moduls für die Versionskontrolle übernehmen, damit bei neuen Site-Instanzen nicht daran erinnert werden muss, Änderungen an der Benutzeroberfläche nach der Installation des Moduls vorzunehmen.

 
The fields: 
field_show_on_page, Field Type: List (text) 
field_news_dateline, Field Type: Date 
View: 
The change in the view is on what field the sorting is done. 

Es wäre einfach die Felder und Ansicht Konfigurationen und fügen Sie sie in das Modul> config> Ordner installieren zu exportieren, aber für die Änderung aufgenommen werden, das erfordert zu deinstallieren und die Installation des Moduls, dem‘ t gemacht werden, ohne Nachrichteninhalte zu löschen, was nicht akzeptabel ist.

Ich verstehe, dass die Änderungen in hook_update_N in der Datei news.install vorgenommen werden können. Aber ich kann keine Beispiele für diese Funktion finden, die nahe genug für dieses Bedürfnis ist. Ich verstehe die Funktion sollte geschrieben werden als:

news_update_8001() {}
aber was würde in den Körper gehen, um die beiden Felder hinzuzufügen und die Ansicht zu aktualisieren?

Vielen Dank.

Antwort

0

Wenn Sie die neuen Felder in der Config können Sie einfach die alten Felder löschen, indem Sie diese in Ihrem Haken und dann drush updb ausführen, bevor Sie die Config importieren:

$field = \Drupal::entityTypeManager()->getStorage('field_config')->load('node.news.old_field'); 
if ($field) { 
    $field->delete(); 
} 
+0

Danke, aber ich weiß nicht müssen alle Felder löschen, fügen Sie einfach zwei neue hinzu. Gibt es eine Möglichkeit, die Feldkonfigurationen hinzuzufügen und auf sie im hook_update_N zu verweisen, um abgeholt zu werden? Ist es so? Wie wird eine Ansicht aktualisiert? –

+0

Verwenden Sie Funktionen oder Drupal Config Import/Export? –

+0

Ich verwende Export für die zwei Felder und Ansicht. –