{"id":3806,"date":"2019-08-04T19:00:04","date_gmt":"2019-08-04T19:00:04","guid":{"rendered":"https:\/\/understanddrupal.com\/?p=3806"},"modified":"2022-04-24T05:55:53","modified_gmt":"2022-04-24T05:55:53","slug":"migrer-les-donnees-dans-les-sous-champs-drupal","status":"publish","type":"post","link":"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/","title":{"rendered":"Migrer les donn\u00e9es dans les sous-champs Drupal"},"content":{"rendered":"\n<p>Dans le post pr\u00e9c\u00e9dente, nous avons appris comment utiliser les plugins de processus pour transformer les donn\u00e9es entre la source et la destination. Certains champs Drupal ont des composants multiples. Par exemple, les champs texte format\u00e9s enregistrent le texte \u00e0 afficher et le format texte \u00e0 appliquer. Les champs d&#8217;image stockent une r\u00e9f\u00e9rence au fichier, le texte de l&#8217;alternative et du titre, la largeur et la hauteur. L&#8217;API de migration se r\u00e9f\u00e8re au composant d&#8217;une champ comme&nbsp;<strong>sous-champ<\/strong>. Aujourd&#8217;hui, nous allons apprendre comment migrer vers ces sous-champs et savoir quels sont les sous-champs disponibles.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"540\" data-src=\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/subfields_migration.jpeg\" alt=\"\" class=\"wp-image-3807 lazyload\" data-srcset=\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/subfields_migration.jpeg 960w, https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/subfields_migration-300x169.jpeg 300w, https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/subfields_migration-768x432.jpeg 768w\" data-sizes=\"(max-width: 960px) 100vw, 960px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 960px; --smush-placeholder-aspect-ratio: 960\/540;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"540\" src=\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/subfields_migration.jpeg\" alt=\"\" class=\"wp-image-3807\" srcset=\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/subfields_migration.jpeg 960w, https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/subfields_migration-300x169.jpeg 300w, https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/subfields_migration-768x432.jpeg 768w\" sizes=\"(max-width: 960px) 100vw, 960px\" \/><\/noscript><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-obtenir-le-code-d-exemple\">Obtenir le code d&#8217;exemple<\/h2>\n\n\n\n<p>L&#8217;exemple d&#8217;aujourd&#8217;hui consistera \u00e0 migrer les donn\u00e9es dans les champs `Corps` et `Image` du type de contenu `Article` qui sont disponibles par d\u00e9faut. Cela suppose que Drupal a \u00e9t\u00e9 install\u00e9 en utilisant le profil d&#8217;installation `standard`. Comme dans les exemples pr\u00e9c\u00e9dents, nous allons cr\u00e9er un nouveau module et \u00e9crire un fichier de d\u00e9finition de migration pour effectuer la migration. Les extraits de code seront compacts pour se concentrer sur des \u00e9l\u00e9ments particuliers de la migration. Le code complet est disponible sur&nbsp;<a href=\"https:\/\/github.com\/dinarcon\/ud_migrations\">https:\/\/github.com\/dinarcon\/ud_migrations<\/a>. Le nom du module est `UD Migration Subfields` et son nom de machine est `ud_migrations_subfields`. Le `id` de l&#8217;exemple de migration est `udm_subfields`. Consultez&nbsp;<a href=\"https:\/\/understanddrupal.com\/fr\/articles\/ecrire-votre-premiere-migration-drupal\">cet article<\/a>&nbsp;pour savoir comment activer le module et ex\u00e9cuter la migration.<\/p>\n\n\n\n<p><code>Loading gist https:\/\/gist.github.com\/dinarcon\/68470f1a50f013ff9fbe35ca79bd1488<\/code><\/p>\n\n\n\n<p>Un seul enregistrement est pr\u00e9sent\u00e9 pour que l&#8217;extrait soit court, mais il en existe d&#8217;autres. En plus d&#8217;avoir un identificateur unique, chaque enregistrement comprend un nom, un profil court et des d\u00e9tails sur l&#8217;image.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-migrer-du-texte-formate\">Migrer du texte format\u00e9<\/h2>\n\n\n\n<p>Le champ `Corps` est de type `Texte (format\u00e9, long, avec r\u00e9sum\u00e9)`. Ce type de champ comporte trois \u00e9l\u00e9ments : le texte int\u00e9gral \u00e0 pr\u00e9senter, un texte sommaire et un format texte. Le Migrate API vous permet d&#8217;\u00e9crire dans chaque composant s\u00e9par\u00e9ment en d\u00e9finissant les cibles des sous-champs. Le prochain extrait de code montre comment le faire :<\/p>\n\n\n\n<p><code>Loading gist https:\/\/gist.github.com\/dinarcon\/68470f1a50f013ff9fbe35ca79bd1488<\/code><\/p>\n\n\n\n<p>La syntaxe \u00e0 migrer dans les sous-champs est le nom de la machine du champ et le nom du sous-champ s\u00e9par\u00e9s par une&nbsp;<em>barre oblique<\/em>&nbsp;(<strong>\/<\/strong>). Puis, un&nbsp;<em>deux-points<\/em>&nbsp;(<strong>:<\/strong>), un&nbsp;<em>espace<\/em>, et la valeur. Vous pouvez d\u00e9finir la valeur d&#8217;un nom de colonne source pour une copie mot \u00e0 mot ou utiliser n&#8217;importe quelle combinaison de&nbsp;<a href=\"https:\/\/understanddrupal.com\/fr\/articles\/utilisation-de-plugins-de-processus-pour-la-transformation-de-donnees-dans-les-migrations\">plugins de processus<\/a>. Il n&#8217;est pas n\u00e9cessaire de migrer dans toutes les sous-champs. Chaque champ d\u00e9termine les composants requis, de sorte qu&#8217;il est possible que toutes les sous-champs ne soient pas d\u00e9finies. Dans cet exemple, seuls le format de la valeur et du texte seront d\u00e9finis.<\/p>\n\n\n\n<p><code>Loading gist https:\/\/gist.github.com\/dinarcon\/68470f1a50f013ff9fbe35ca79bd1488<\/code><\/p>\n\n\n\n<p>Le sous-champ `value` est d\u00e9finie sur la colonne source `profile`. Comme vous pouvez le voir dans le premier extrait, il contient des balises HTML. Une balise `a` pour \u00eatre pr\u00e9cis. Parce que nous voulons que la balise soit rendue comme un lien, un format de texte qui autorise cette balise doit \u00eatre sp\u00e9cifi\u00e9. Il n&#8217;y a pas d&#8217;informations sur les formats de texte dans les sources, mais Drupal est livr\u00e9 avec un couple que nous pouvons choisir. Dans ce cas, nous utilisons le format de texte `Restricted HTML`. Notez que le plugin `default_value` est utilis\u00e9 et d\u00e9fini sur `restricted_html`. Lors du r\u00e9glage des formats de texte, il est n\u00e9cessaire d&#8217;utiliser leur nom de machine. Vous pouvez les trouver dans la page de configuration pour chaque format de texte. Pour `HTML restreint&#8217;; c&#8217;est-\u00e0-dire \/admin\/config\/content\/formats\/manage\/restricted_html.<\/p>\n\n\n\n<p><em>Remarque<\/em>: Les&nbsp;<a href=\"https:\/\/www.drupal.org\/node\/213156\">formats de texte<\/a>&nbsp;sont un sujet compl\u00e8tement diff\u00e9rent qui a m\u00eame des&nbsp;<a href=\"https:\/\/www.drupal.org\/docs\/8\/security\/drupal-8-sanitizing-output\">implications en mati\u00e8re de s\u00e9curit\u00e9<\/a>. Pour que la discussion ne s&#8217;\u00e9loigne pas du sujet, nous ne donnerons que quelques recommandations. Lorsque vous devez migrer les balises HTML, vous devez savoir quelles balises apparaissent dans votre source, lesquelles vous voulez autoriser dans Drupal, et s\u00e9lectionner un format de texte qui accepte ce que vous avez mis sur liste blanche et filtrer toute balise dangereuse comme `script`. En r\u00e8gle g\u00e9n\u00e9rale, vous devriez \u00e9viter de d\u00e9finir le sous-champ `format` pour utiliser le format texte `Full HTML`.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-migrer-des-images\">Migrer des images<\/h2>\n\n\n\n<p>Ils existent&nbsp;<a href=\"https:\/\/www.drupal.org\/docs\/8\/api\/migrate-api\/migrate-destination-plugins-examples\/migrating-files-and-images\">diff\u00e9rentes approches pour migrer les images<\/a>. Aujourd&#8217;hui, nous allons utiliser le module&nbsp;<a href=\"https:\/\/www.drupal.org\/project\/migrate_file\">Migrate Files<\/a>. Il est important de noter que Drupal traite les images comme des fichiers avec des propri\u00e9t\u00e9s et un comportement suppl\u00e9mentaires. Toute approche utilis\u00e9e pour migrer des fichiers peut \u00eatre adapt\u00e9e pour migrer des images.<\/p>\n\n\n\n<p><code>Loading gist https:\/\/gist.github.com\/dinarcon\/68470f1a50f013ff9fbe35ca79bd1488<\/code><\/p>\n\n\n\n<p>Lorsque vous migrez n&#8217;importe quel champ, vous devez utiliser leur machine dans la section de mappage. Pour le champ `Image`, le nom de la machine est `field_image`. Sachant cela, vous avez d\u00e9fini chacune de ses sous-champs:<\/p>\n\n\n\n<ul><li>`target_id` stocke un nombre entier que Drupal utilise comme r\u00e9f\u00e9rence au fichier.<\/li><li>`alt` stocke une cha\u00eene de caract\u00e8res qui repr\u00e9sente le texte alternatif. Toujours en r\u00e9gler un pour une meilleure accessibilit\u00e9.<\/li><li>`title` stocke une cha\u00eene de caract\u00e8res qui repr\u00e9sente l&#8217;attribut titre.<\/li><li>`width` stocke un nombre entier qui repr\u00e9sente la largeur en pixels.<\/li><li>`height` stocke un nombre entier qui repr\u00e9sente la hauteur en pixels.<\/li><\/ul>\n\n\n\n<p>Pour le `target_id`, le plugin `file_import` est utilis\u00e9. Ce plugin n\u00e9cessite une valeur de configuration `source` avec une url vers le fichier. Dans ce cas, la colonne `photo_url` de la section&nbsp;<em>source<\/em>&nbsp;est utilis\u00e9e. L&#8217;indicateur `reuse` indique que si un fichier avec le m\u00eame emplacement et le m\u00eame nom existe, il doit \u00eatre utilis\u00e9 au lieu de t\u00e9l\u00e9charger une nouvelle copie. Lorsque vous travaillez sur des migrations, il est commun de les ex\u00e9cuter une et une autre fois jusqu&#8217;\u00e0 ce que vous obteniez les r\u00e9sultats d\u00e9sir\u00e9s. L&#8217;utilisation de l&#8217;option `reuse` \u00e9vitera de cr\u00e9er plusieurs r\u00e9f\u00e9rences ou copies du fichier image, en fonction de la configuration du plugin. L&#8217;option `id_only` est d\u00e9finie de telle sorte que le plugin ne renvoie que l&#8217;identifiant de fichier utilis\u00e9 par Drupal au lieu d&#8217;un tableau de r\u00e9f\u00e9rence d&#8217;entit\u00e9. Ceci est d\u00fb au fait que chaque sous-champ est d\u00e9finie manuellement. Pour les autres sous-zones (`alt`, `title`, `width` et `height`), la valeur est une copie exacte de la&nbsp;<em>source<\/em>.<\/p>\n\n\n\n<p><em>Remarque<\/em>: Le module Migrate Files propose un autre plugin nomm\u00e9 `image_import`. Celui-ci vous permet de d\u00e9finir tous les sous-champs dans le cadre de la configuration du plugin. Un exemple de son utilisation sera montr\u00e9 dans le prochain article. Cet exemple utilise le plugin `file_import` pour mettre en \u00e9vidence la configuration des sous-champs image.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-quelles-sont-les-sous-champs-disponibles\">Quelles sont les sous-champs&nbsp;disponibles?<\/h2>\n\n\n\n<p>Certaines champs ont de nombreuses sous-champs. Les&nbsp;<a href=\"https:\/\/www.drupal.org\/project\/address\">champs d&#8217;adresse<\/a>, par exemple, ont&nbsp;<a href=\"https:\/\/git.drupalcode.org\/project\/address\/blob\/8.x-1.x\/src\/Plugin\/Field\/FieldType\/AddressItem.php#L36\">13 sous-champs<\/a>. Comment pouvez-vous savoir lesquels sont disponibles ? La r\u00e9ponse se trouve dans la classe qui fournit le type de champ. Une fois que vous avez trouv\u00e9 la classe, recherchez la m\u00e9thode `schema`. Les sous-champs sont contenues dans le tableau `columns&#8217;; de la valeur retourn\u00e9e par cette m\u00e9thode. Voyons quelques exemples.<\/p>\n\n\n\n<ul><li>Le champ `Texte (brut)` est fourni par la classe&nbsp;<a href=\"https:\/\/git.drupalcode.org\/project\/drupal\/blob\/8.8.x\/core\/lib\/Drupal\/Core\/Field\/Plugin\/Field\/FieldType\/StringItem.php#L37\">StringItem<\/a>.<\/li><li>Le champ `Nombre (entier)&#8217; est fourni par la classe&nbsp;<a href=\"https:\/\/git.drupalcode.org\/project\/drupal\/blob\/8.8.x\/core\/lib\/Drupal\/Core\/Field\/Plugin\/Field\/FieldType\/IntegerItem.php#L87\">IntegerItem<\/a>.<\/li><li>Le champ `Texte (format\u00e9, long, avec r\u00e9sum\u00e9); est fourni par la classe&nbsp;<a href=\"https:\/\/git.drupalcode.org\/project\/drupal\/blob\/8.8.x\/core\/modules\/text\/src\/Plugin\/Field\/FieldType\/TextWithSummaryItem.php#L55\">TextWithSummaryItem<\/a>.<\/li><li>Le champ `Image` est fourni par la classe&nbsp;<a href=\"https:\/\/git.drupalcode.org\/project\/drupal\/blob\/8.8.x\/core\/modules\/image\/src\/Plugin\/Field\/FieldType\/ImageItem.php#L100\">ImageItem<\/a>.<\/li><\/ul>\n\n\n\n<p>La m\u00e9thode `schema` d\u00e9finit les colonnes de la base de donn\u00e9es utilis\u00e9es par le champ pour stocker ses donn\u00e9es. Lorsque vous migrez dans des sous-champs, vous migrez en fait dans ces colonnes de base de donn\u00e9es particuli\u00e8res. Toute restriction impos\u00e9e par le sch\u00e9ma de la base de donn\u00e9es doit \u00eatre respect\u00e9e. C&#8217;est pourquoi vous n&#8217;utilisez pas d&#8217;unit\u00e9s lors de la migration de la largeur et de la hauteur des images. La base de donn\u00e9es n&#8217;attend qu&#8217;un nombre entier repr\u00e9sentant les valeurs correspondantes en pixels. En raison des pratiques orient\u00e9es objet, vous avez parfois besoin de regarder la classe parent pour conna\u00eetre tous les sous-champs qui sont disponibles.<\/p>\n\n\n\n<p><em>Note technique<\/em>: L\u2019API Migrate contourne les validations de&nbsp; l\u2019<a href=\"https:\/\/api.drupal.org\/api\/drupal\/elements\/8.8.x\">API Form<\/a>. Par exemple, il est possible de migrer des images sans param\u00e9trer le sous-champ `alt` m\u00eame si celle-ci est d\u00e9finie comme requis dans la configuration du champ. Si vous essayez de modifier un n\u0153ud cr\u00e9\u00e9 de cette fa\u00e7on, vous obtiendrez une erreur de zone indiquant que le texte alternatif est obligatoire. De m\u00eame, il est possible d&#8217;\u00e9crire le sous-champ `title` m\u00eame si le champ ne s&#8217;y attend pas, comme dans l&#8217;exemple d&#8217;aujourd&#8217;hui. Si vous deviez activer le texte `title` plus tard, les informations seront d\u00e9j\u00e0 l\u00e0. Rappelez-vous que lorsque vous utilisez l\u2018API Migrate, vous \u00e9crivez directement dans la base de donn\u00e9es.<\/p>\n\n\n\n<p>Une autre option est de se connecter \u00e0 la base de donn\u00e9es et de v\u00e9rifier les structures des tables. Par exemple, le champ `Image` stocke ses donn\u00e9es dans la table `node__field_image&#8217;;. Entre autres, cette table comporte cinq colonnes qui portent le nom du nom de la machine et de le sous-champ du champ:<\/p>\n\n\n\n<ul><li>field_image_target_id<\/li><li>field_image_alt<\/li><li>field_image_title<\/li><li>field_image_width<\/li><li>field_image_height<\/li><\/ul>\n\n\n\n<p>L\u2019examination du code source ou du sch\u00e9ma de la base de donn\u00e9es n&#8217;est pas simple. Ces informations sont incluses \u00e0 titre de r\u00e9f\u00e9rence pour ceux qui souhaitent explorer plus en d\u00e9tail l&#8217;API Migrate. Vous pouvez rechercher des exemples de migrations pour voir quels sous-champs sont disponibles. Je pourrais m\u00eame fournir une liste dans un futur billet de blog. \ud83d\ude09<\/p>\n\n\n\n<p><em>Conseil<\/em>: Vous pouvez utiliser&nbsp;<a href=\"https:\/\/drupalconsole.com\/\">Drupal Console<\/a>&nbsp;pour l&#8217;introspection du code et l&#8217;analyse de la structure des tables de la base de donn\u00e9es. De plus, de nombreux plugins sont d\u00e9finis par des classes qui se terminent par la cha\u00eene de caract\u00e8res `Item`. Vous pouvez utiliser la fonction de recherche de votre EDI pour trouver la classe en utilisant le nom du champ comme indice.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-sous-champs-par-defaut\">Sous-champs par d\u00e9faut<\/h2>\n\n\n\n<p>Chaque champ Drupal poss\u00e8de au moins une sous-champ. Par exemple, `Text (simple)` et `Number (integer)` d\u00e9finit uniquement la sous-zone `valeur`. Les extraits de code suivants sont \u00e9quivalents :<\/p>\n\n\n\n<p><code>Loading gist https:\/\/gist.github.com\/dinarcon\/68470f1a50f013ff9fbe35ca79bd1488<\/code><\/p>\n\n\n\n<p><code>Loading gist https:\/\/gist.github.com\/dinarcon\/68470f1a50f013ff9fbe35ca79bd1488<\/code><\/p>\n\n\n\n<p>Dans les exemples des jours pr\u00e9c\u00e9dents, aucun sous-champ n&#8217;a \u00e9t\u00e9 d\u00e9finie manuellement, mais Drupal sait quoi faire. Comme nous l&#8217;avons mentionn\u00e9, l&#8217;API Migrate offre du&nbsp;<a href=\"https:\/\/understanddrupal.com\/fr\/articles\/utilisation-de-plugins-de-processus-pour-la-transformation-de-donnees-dans-les-migrations\">sucre syntaxique<\/a>&nbsp;pour \u00e9crire des fichiers de d\u00e9finition de migration plus courts. C&#8217;est un autre exemple. Vous pouvez sauter le sous-champ d\u00e9fini par d\u00e9faut et r\u00e9gler manuellement les autres au besoin. Pour les champs `Fichier` et `Image`, le sous-champ par d\u00e9faut est `target_id`. Comment l&#8217;API Migrate sait-elle quel sous-champ est le sous-champ par d\u00e9faut ? Tu dois rev\u00e9rifier le code.<\/p>\n\n\n\n<p>Le sous-champ par d\u00e9faut est d\u00e9termin\u00e9e par la valeur de retour de la m\u00e9thode `mainPropertyName` de la classe fournissant le type de zone. Encore une fois, les pratiques orient\u00e9es objet peuvent n\u00e9cessiter de regarder les classes parentales pour trouver cette m\u00e9thode. Dans le cas du champ `Image`, il est fourni par&nbsp;<a href=\"https:\/\/git.drupalcode.org\/project\/drupal\/blob\/8.8.x\/core\/modules\/image\/src\/Plugin\/Field\/FieldType\/ImageItem.php\">ImageItem<\/a>&nbsp;qui \u00e9tend&nbsp;<a href=\"https:\/\/git.drupalcode.org\/project\/drupal\/blob\/8.8.x\/core\/modules\/file\/src\/Plugin\/Field\/FieldType\/FileItem.php\">FileItem<\/a>&nbsp;qui \u00e9tend&nbsp;<a href=\"https:\/\/git.drupalcode.org\/project\/drupal\/blob\/8.8.x\/core\/lib\/Drupal\/Core\/Field\/Plugin\/Field\/FieldType\/EntityReferenceItem.php\">EntityReferenceItem<\/a>. C&#8217;est ce dernier qui contient le `<a href=\"https:\/\/git.drupalcode.org\/project\/drupal\/blob\/8.8.x\/core\/lib\/Drupal\/Core\/Field\/Plugin\/Field\/FieldType\/EntityReferenceItem.php#L108\">mainPropertyName<\/a>` renvoyant la cha\u00eene `target_id`.<\/p>\n\n\n\n<p>Qu&#8217;avez-vous appris dans le billet d&#8217;aujourd&#8217;hui ? Connaissiez-vous le concept de sous-champs ? Vous \u00eates-vous d\u00e9j\u00e0 demand\u00e9 quelles sont les cibles de destination possibles (sous-champs ) pour chaque type de champ ? Saviez-vous que l&#8217;API Migrate trouve le sous-champ par d\u00e9faut pour vous ? Veuillez partager vos r\u00e9ponses dans les commentaires. Aussi, je vous serais reconnaissant de bien vouloir partager ce billet de blog avec vos coll\u00e8gues.<\/p>\n\n\n\n<p><em>Cette s\u00e9rie de billets est rendue possible gr\u00e2ce \u00e0 ces&nbsp;<a href=\"https:\/\/understanddrupal.com\/migrations\">g\u00e9n\u00e9reux commanditaires<\/a>.&nbsp;<a href=\"https:\/\/understanddrupal.com\/fr\/contact\/feedback\">Contactez-nous<\/a>&nbsp;si votre organisation souhaite soutenir ce projet de documentation, qu&#8217;il s&#8217;agisse de la s\u00e9rie sur la migration ou d&#8217;autres sujets.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans le post pr\u00e9c\u00e9dente, nous avons appris comment utiliser les plugins de processus pour transformer les donn\u00e9es entre la source et la destination. Certains champs Drupal ont des composants multiples. Par exemple, les champs texte format\u00e9s enregistrent le texte \u00e0 afficher et le format texte \u00e0 appliquer. Les champs d&#8217;image stockent une r\u00e9f\u00e9rence au fichier, le texte de l&#8217;alternative et du titre, la largeur et la hauteur. L&#8217;API de migration se r\u00e9f\u00e8re au composant d&#8217;une champ comme sous-champ. Aujourd&#8217;hui, nous allons apprendre comment migrer vers ces sous-champs et savoir quels sont les sous-champs disponibles.<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[23],"tags":[72],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Migrer les donn\u00e9es dans les sous-champs Drupal - Understand Drupal<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Migrer les donn\u00e9es dans les sous-champs Drupal - Understand Drupal\" \/>\n<meta property=\"og:description\" content=\"Dans le post pr\u00e9c\u00e9dente, nous avons appris comment utiliser les plugins de processus pour transformer les donn\u00e9es entre la source et la destination. Certains champs Drupal ont des composants multiples. Par exemple, les champs texte format\u00e9s enregistrent le texte \u00e0 afficher et le format texte \u00e0 appliquer. Les champs d&#039;image stockent une r\u00e9f\u00e9rence au fichier, le texte de l&#039;alternative et du titre, la largeur et la hauteur. L&#039;API de migration se r\u00e9f\u00e8re au composant d&#039;une champ comme sous-champ. Aujourd&#039;hui, nous allons apprendre comment migrer vers ces sous-champs et savoir quels sont les sous-champs disponibles.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/\" \/>\n<meta property=\"og:site_name\" content=\"Understand Drupal\" \/>\n<meta property=\"article:published_time\" content=\"2019-08-04T19:00:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-04-24T05:55:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/subfields_migration.jpeg\" \/>\n<meta name=\"author\" content=\"Mauricio Dinarte\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mauricio Dinarte\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/\"},\"author\":{\"name\":\"Mauricio Dinarte\",\"@id\":\"https:\/\/understanddrupal.com\/#\/schema\/person\/73fa828d2b498d144def1204a114b7d3\"},\"headline\":\"Migrer les donn\u00e9es dans les sous-champs Drupal\",\"datePublished\":\"2019-08-04T19:00:04+00:00\",\"dateModified\":\"2022-04-24T05:55:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/\"},\"wordCount\":2033,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/understanddrupal.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/subfields_migration.jpeg\",\"keywords\":[\"migrations\"],\"articleSection\":[\"Non classifi\u00e9(e)\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/\",\"url\":\"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/\",\"name\":\"Migrer les donn\u00e9es dans les sous-champs Drupal - Understand Drupal\",\"isPartOf\":{\"@id\":\"https:\/\/understanddrupal.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/subfields_migration.jpeg\",\"datePublished\":\"2019-08-04T19:00:04+00:00\",\"dateModified\":\"2022-04-24T05:55:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/#primaryimage\",\"url\":\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/subfields_migration.jpeg\",\"contentUrl\":\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/subfields_migration.jpeg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/understanddrupal.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migrer les donn\u00e9es dans les sous-champs Drupal\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/understanddrupal.com\/#website\",\"url\":\"https:\/\/understanddrupal.com\/\",\"name\":\"Understand Drupal\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/understanddrupal.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/understanddrupal.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/understanddrupal.com\/#organization\",\"name\":\"Understand Drupal\",\"url\":\"https:\/\/understanddrupal.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/understanddrupal.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2021\/12\/understanddrupal_logo_white.png\",\"contentUrl\":\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2021\/12\/understanddrupal_logo_white.png\",\"width\":100,\"height\":73,\"caption\":\"Understand Drupal\"},\"image\":{\"@id\":\"https:\/\/understanddrupal.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/understanddrupal.com\/#\/schema\/person\/73fa828d2b498d144def1204a114b7d3\",\"name\":\"Mauricio Dinarte\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/understanddrupal.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/20c842c5c006728abe93e6122524f5b7?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/20c842c5c006728abe93e6122524f5b7?s=96&d=blank&r=g\",\"caption\":\"Mauricio Dinarte\"},\"url\":\"https:\/\/understanddrupal.com\/fr\/blog\/author\/dinarcon\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Migrer les donn\u00e9es dans les sous-champs Drupal - Understand Drupal","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/","og_locale":"fr_FR","og_type":"article","og_title":"Migrer les donn\u00e9es dans les sous-champs Drupal - Understand Drupal","og_description":"Dans le post pr\u00e9c\u00e9dente, nous avons appris comment utiliser les plugins de processus pour transformer les donn\u00e9es entre la source et la destination. Certains champs Drupal ont des composants multiples. Par exemple, les champs texte format\u00e9s enregistrent le texte \u00e0 afficher et le format texte \u00e0 appliquer. Les champs d'image stockent une r\u00e9f\u00e9rence au fichier, le texte de l'alternative et du titre, la largeur et la hauteur. L'API de migration se r\u00e9f\u00e8re au composant d'une champ comme sous-champ. Aujourd'hui, nous allons apprendre comment migrer vers ces sous-champs et savoir quels sont les sous-champs disponibles.","og_url":"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/","og_site_name":"Understand Drupal","article_published_time":"2019-08-04T19:00:04+00:00","article_modified_time":"2022-04-24T05:55:53+00:00","og_image":[{"url":"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/subfields_migration.jpeg"}],"author":"Mauricio Dinarte","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Mauricio Dinarte","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/#article","isPartOf":{"@id":"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/"},"author":{"name":"Mauricio Dinarte","@id":"https:\/\/understanddrupal.com\/#\/schema\/person\/73fa828d2b498d144def1204a114b7d3"},"headline":"Migrer les donn\u00e9es dans les sous-champs Drupal","datePublished":"2019-08-04T19:00:04+00:00","dateModified":"2022-04-24T05:55:53+00:00","mainEntityOfPage":{"@id":"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/"},"wordCount":2033,"commentCount":0,"publisher":{"@id":"https:\/\/understanddrupal.com\/#organization"},"image":{"@id":"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/#primaryimage"},"thumbnailUrl":"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/subfields_migration.jpeg","keywords":["migrations"],"articleSection":["Non classifi\u00e9(e)"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/","url":"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/","name":"Migrer les donn\u00e9es dans les sous-champs Drupal - Understand Drupal","isPartOf":{"@id":"https:\/\/understanddrupal.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/#primaryimage"},"image":{"@id":"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/#primaryimage"},"thumbnailUrl":"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/subfields_migration.jpeg","datePublished":"2019-08-04T19:00:04+00:00","dateModified":"2022-04-24T05:55:53+00:00","breadcrumb":{"@id":"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/#primaryimage","url":"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/subfields_migration.jpeg","contentUrl":"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/subfields_migration.jpeg"},{"@type":"BreadcrumbList","@id":"https:\/\/understanddrupal.com\/fr\/blog\/migrer-les-donnees-dans-les-sous-champs-drupal\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/understanddrupal.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Migrer les donn\u00e9es dans les sous-champs Drupal"}]},{"@type":"WebSite","@id":"https:\/\/understanddrupal.com\/#website","url":"https:\/\/understanddrupal.com\/","name":"Understand Drupal","description":"","publisher":{"@id":"https:\/\/understanddrupal.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/understanddrupal.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/understanddrupal.com\/#organization","name":"Understand Drupal","url":"https:\/\/understanddrupal.com\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/understanddrupal.com\/#\/schema\/logo\/image\/","url":"https:\/\/understanddrupal.com\/wp-content\/uploads\/2021\/12\/understanddrupal_logo_white.png","contentUrl":"https:\/\/understanddrupal.com\/wp-content\/uploads\/2021\/12\/understanddrupal_logo_white.png","width":100,"height":73,"caption":"Understand Drupal"},"image":{"@id":"https:\/\/understanddrupal.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/understanddrupal.com\/#\/schema\/person\/73fa828d2b498d144def1204a114b7d3","name":"Mauricio Dinarte","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/understanddrupal.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/20c842c5c006728abe93e6122524f5b7?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/20c842c5c006728abe93e6122524f5b7?s=96&d=blank&r=g","caption":"Mauricio Dinarte"},"url":"https:\/\/understanddrupal.com\/fr\/blog\/author\/dinarcon\/"}]}},"_links":{"self":[{"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/posts\/3806"}],"collection":[{"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/comments?post=3806"}],"version-history":[{"count":1,"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/posts\/3806\/revisions"}],"predecessor-version":[{"id":5355,"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/posts\/3806\/revisions\/5355"}],"wp:attachment":[{"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/media?parent=3806"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/categories?post=3806"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/tags?post=3806"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}