2017-08-17 6 views
0

Nous avons un module personnalisé existant pour notre application Drupal 8 qui a créé un type de contenu et une vue. Le module "news" est dans notre environnement de production fonctionnant correctement; de nombreux éléments de contenu ont été créés en l'utilisant.Exemple de code Drupal 8 hook_update_n nécessaire

Des améliorations ont maintenant été demandées: 2 nouveaux champs et une modification de la vue. J'ai fait les changements en utilisant l'interface utilisateur d'administration dans notre environnement de développement, mais je devrais mettre ces changements dans le code du module pour le contrôle de version afin qu'il ne soit pas nécessaire de modifier l'interface utilisateur après l'installation du module.

 
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. 

Il serait simple d'exporter les champs et afficher les configurations et les ajouter au module> config> dossier d'installation, mais pour que le changement soit pris, qui nécessite de désinstaller et de réinstaller le module, qui peut » t être fait sans avoir besoin de supprimer le contenu des nouvelles, ce qui n'est pas acceptable. Je comprends que les modifications peuvent être effectuées dans hook_update_N dans le fichier news.install. Mais je ne trouve pas d'exemples pour cette fonction qui soit assez proche de ce besoin. Je comprends que la fonction devrait être écrit comme:

news_update_8001() {}
mais qu'est-ce qui irait dans le corps pour ajouter les deux champs et mettre à jour la vue?

Merci.

Répondre

0

Si vous avez les nouveaux champs dans votre config, vous pouvez simplement supprimer les anciens champs en ajoutant dans votre crochet, puis exécutez drush UPDB avant d'importer la configuration:

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

Merci, mais je ne besoin de supprimer tous les champs, il suffit d'ajouter deux nouveaux. Existe-t-il un moyen d'ajouter les configurations de champ et de s'y référer dans le hook_update_N pour être récupéré? Est-ce ainsi que c'est fait? De même, comment une vue est-elle mise à jour? –

+0

Utilisez-vous des fonctionnalités ou des commandes drupal config import/export? –

+0

J'utilise l'exportation pour les deux champs et la vue. –