{"id":3704,"date":"2019-08-05T23:00:50","date_gmt":"2019-08-05T23:00:50","guid":{"rendered":"https:\/\/understanddrupal.com\/?p=3704"},"modified":"2022-04-24T05:55:47","modified_gmt":"2022-04-24T05:55:47","slug":"utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal","status":"publish","type":"post","link":"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/","title":{"rendered":"Utilisation de constantes et de pseudo-champs comme espaces r\u00e9serv\u00e9s de donn\u00e9es dans les migrations Drupal"},"content":{"rendered":"\n<p>Jusqu&#8217;\u00e0 pr\u00e9sent, nous avons appris \u00e0 \u00e9crire des migrations Drupal basiques et \u00e0 utiliser des plugins de processus pour transformer les donn\u00e9es afin de r\u00e9pondre au format attendu par la destination. Dans le&nbsp;<a href=\"https:\/\/understanddrupal.com\/fr\/articles\/migrer-les-donnees-dans-les-sous-champs-drupal\">post pr\u00e9c\u00e9dent<\/a>, nous avons appris l&#8217;une des nombreuses approches de la migration des images. Dans l&#8217;exemple d&#8217;aujourd&#8217;hui, nous allons le changer un peu pour introduire deux nouveaux concepts de migration: les&nbsp;<strong>constantes<\/strong>&nbsp;et les&nbsp;<strong>pseudo-champs<\/strong>. Les deux peuvent \u00eatre utilis\u00e9s comme donn\u00e9es g\u00e9n\u00e9riques dans la ligne de temps de migration. Avec d&#8217;autres plugins de processus, ils vous permettent de construire des valeurs dynamiques qui peuvent \u00eatre utilis\u00e9es dans le cadre du&nbsp;<strong>pipeline de processus<\/strong>.<\/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\/constants_pseudofield_pipeline_0.jpeg\" alt=\"\" class=\"wp-image-3705 lazyload\" data-srcset=\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/constants_pseudofield_pipeline_0.jpeg 960w, https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/constants_pseudofield_pipeline_0-300x169.jpeg 300w, https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/constants_pseudofield_pipeline_0-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\/constants_pseudofield_pipeline_0.jpeg\" alt=\"\" class=\"wp-image-3705\" srcset=\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/constants_pseudofield_pipeline_0.jpeg 960w, https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/constants_pseudofield_pipeline_0-300x169.jpeg 300w, https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/constants_pseudofield_pipeline_0-768x432.jpeg 768w\" sizes=\"(max-width: 960px) 100vw, 960px\" \/><\/noscript><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-definition-et-utilisation-des-constantes\">D\u00e9finition et utilisation des constantes<\/h2>\n\n\n\n<p>Dans l&#8217;API Migrate, une&nbsp;<strong>constante<\/strong>&nbsp;est&nbsp;<em>une valeur arbitraire qui peut \u00eatre utilis\u00e9e ult\u00e9rieurement dans le pipeline de processus<\/em>. Ils sont d\u00e9finis comme enfants directs de la section&nbsp;<em>source<\/em>. Vous \u00e9crivez une cl\u00e9 `constants` dont la valeur est une liste de paires nom-valeur. M\u00eame s&#8217;ils sont d\u00e9finis dans la section source, ils sont ind\u00e9pendants du plugin source utilis\u00e9. L&#8217;extrait de code suivant montre une g\u00e9n\u00e9ralisation des param\u00e8tres et de l&#8217;utilisation des&nbsp;<em>constantes<\/em>:<\/p>\n\n\n\n<p><code>Loading gist https:\/\/gist.github.com\/dinarcon\/6c4b5bdc5dae5455bd9641a05e3701a4<\/code><\/p>\n\n\n\n<p>Vous pouvez d\u00e9finir autant de constantes que vous le souhaitez. Bien que l&#8217;API ne l&#8217;exige pas, c&#8217;est une convention courante d&#8217;\u00e9crire les noms des constantes en majuscules et d&#8217;utiliser des&nbsp;<em>tirets bas<\/em>&nbsp;(<strong>_<\/strong>) pour s\u00e9parer les mots. La valeur peut \u00eatre r\u00e9gl\u00e9e sur n&#8217;importe quelle valeur que vous devez utiliser plus tard. Dans l&#8217;exemple ci-dessus, il y a des cha\u00eenes de caract\u00e8res, des entiers, des d\u00e9cimales et des tableaux. Pour utiliser une constante dans la section process, tapez son nom, comme n&#8217;importe quelle autre colonne fournie par le plugin&nbsp;<em>source<\/em>. Notez que vous utilisez la constante dont vous avez besoin pour nommer la hi\u00e9rarchie compl\u00e8te sous la section source. C&#8217;est-\u00e0-dire, le mot `constants` et le nom lui-m\u00eame s\u00e9par\u00e9s par une&nbsp;<em>barre oblique<\/em>&nbsp;(<strong>\/<\/strong>). Ils peuvent \u00eatre utilis\u00e9s pour copier leur valeur directement vers la destination ou dans le cadre de n&#8217;importe quelle configuration de plugin de processus.<\/p>\n\n\n\n<p><em>Note technique<\/em>: Le mot `constants` pour stocker les valeurs dans la section source n&#8217;est pas sp\u00e9cial. Vous pouvez utiliser n&#8217;importe quel mot tant qu&#8217;il n&#8217;entre pas en collision avec une autre cl\u00e9 de configuration de votre plugin source particulier. Une raison d&#8217;utiliser un nom diff\u00e9rent est que votre source contient en fait une colonne nomm\u00e9e `constants`. Dans ce cas, vous pouvez utiliser `defaults` ou un autre nom. La seule restriction est que quelle que soit la valeur que vous utilisez, vous devez l&#8217;utiliser dans la section process pour faire r\u00e9f\u00e9rence \u00e0 une constante. Par exemple :<\/p>\n\n\n\n<p><code>Loading gist https:\/\/gist.github.com\/dinarcon\/6c4b5bdc5dae5455bd9641a05e3701a4<\/code><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-reglage-et-utilisation-de-pseudo-champs\">R\u00e9glage et utilisation de pseudo-champs<\/h2>\n\n\n\n<p>Comme les constantes, les&nbsp;<strong>pseudo-champs<\/strong>&nbsp;stockent&nbsp;<em>des valeurs arbitraires qui seront utilis\u00e9es plus tard dans le processus<\/em>. Il y a quelques diff\u00e9rences importantes. Les pseudo-champs sont d\u00e9finis dans la section du&nbsp;<em>processus<\/em>. Le nom est arbitraire tant qu&#8217;il n&#8217;entre pas en conflit avec un nom de propri\u00e9t\u00e9 ou un nom de champ de la destination. La valeur peut \u00eatre fix\u00e9e \u00e0 une copie mot \u00e0 mot de la&nbsp;<em>source<\/em>&nbsp;(une colonne ou une constante) ou ils peuvent utiliser des plugins de processus pour les transformations de donn\u00e9es. L&#8217;extrait de code suivant montre une g\u00e9n\u00e9ralisation des param\u00e8tres et de l&#8217;utilisation de&nbsp;<em>pseudo-champs<\/em>:<\/p>\n\n\n\n<p><code>Loading gist https:\/\/gist.github.com\/dinarcon\/6c4b5bdc5dae5455bd9641a05e3701a4<\/code><\/p>\n\n\n\n<p>Dans l&#8217;exemple ci-dessus, `my_pseudofield_1` est le r\u00e9sultat d&#8217;une transformation de processus `concat` qui joint une constante et une colonne de la section source. La valeur de r\u00e9sultat est ensuite utilis\u00e9e dans une transformation de processus `urlencode`. Notez que pour utiliser la valeur de `my_pseudofield_1` vous devez la mettre entre&nbsp;<em>guillemets<\/em>&nbsp;(<strong>&#8216;<\/strong>) et ajouter une&nbsp;<em>arobase<\/em>&nbsp;(<strong>@<\/strong>) au nom. La nouvelle valeur obtenue \u00e0 partir de l&#8217;op\u00e9ration d&#8217;encodage URL est stock\u00e9e dans `my_pseudofield_2`. Ce dernier pseudo-champ est utilis\u00e9 pour d\u00e9finir la valeur du sous-champ `uri` pour `field_link`. L&#8217;exemple pourrait \u00eatre simplifi\u00e9, par exemple, en utilisant un seul pseudo-champ et en cha\u00eenant les plugins de processus. Il est pr\u00e9sent\u00e9 de cette fa\u00e7on pour d\u00e9montrer qu&#8217;un pseudo-champ peut \u00eatre utilis\u00e9 comme assignation directe ou comme partie int\u00e9grante des valeurs de configuration d&#8217;un plugin de processus.<\/p>\n\n\n\n<p><em>Note technique<\/em>: Si le nom de la sous-champs peut \u00eatre arbitraire, comment pouvez-vous emp\u00eacher les conflits de noms avec les noms de propri\u00e9t\u00e9s de destination et les noms de champs ? Vous devrez peut-\u00eatre regarder la source de l&#8217;entit\u00e9 et la configuration du bundle. Dans le cas d&#8217;une migration de noeud, regardez la m\u00e9thode&nbsp;<a href=\"https:\/\/git.drupalcode.org\/project\/drupal\/blob\/8.8.x\/core\/modules\/node\/src\/Entity\/Node.php#L275\">baseFieldDefinitions<\/a>() de la classe&nbsp;<a href=\"https:\/\/git.drupalcode.org\/project\/drupal\/blob\/8.8.x\/core\/modules\/node\/src\/Entity\/Node.php\">Node<\/a>&nbsp;pour une liste de noms de propri\u00e9t\u00e9s. Pr\u00eatez attention \u00e0 l&#8217;h\u00e9ritage de classes et au remplacement de m\u00e9thodes. Pour obtenir la liste des champs et leurs noms de machine, consultez la section `G\u00e9rer les champs` du type de contenu dans lequel vous migrez. L&#8217;<a href=\"https:\/\/api.drupal.org\/api\/drupal\/core!modules!field!field.module\/group\/field\/8.8.x\">API Field<\/a>&nbsp;pr\u00e9fixe tout champ cr\u00e9\u00e9 via l&#8217;interface d&#8217;administration avec la cha\u00eene de caract\u00e8res `field_`. Cela r\u00e9duit la probabilit\u00e9 de conflits de noms. En dehors de ces deux restrictions de nom,&nbsp;<em>tout peut \u00eatre utilis\u00e9<\/em>. Dans ce cas, l&#8217;API Migrate effectuera \u00e9ventuellement une op\u00e9ration de sauvegarde d&#8217;entit\u00e9 qui \u00e9liminera les pseudo-champs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-comprendre-le-pipeline-de-processus-d-api-drupal-migrate\">Comprendre le pipeline de processus d\u2019API Drupal Migrate<\/h2>\n\n\n\n<p>Le pipeline de migration de processus est un m\u00e9canisme par lequel la valeur&nbsp;<strong>d&#8217;une propri\u00e9t\u00e9 de destination, d&#8217;un champ ou d&#8217;un pseudo-champ<\/strong>&nbsp;qui a \u00e9t\u00e9 d\u00e9fini&nbsp;<strong>peut \u00eatre utilis\u00e9e par tout ce qui est d\u00e9fini ult\u00e9rieurement dans la section du processus<\/strong>. Le fait que l&#8217;utilisation d&#8217;un pseudo-champ n\u00e9cessite de mettre son nom entre guillemets et de le pr\u00e9c\u00e9der avec une arobase est en fait une exigence du pipeline du processus. Voyons quelques exemples de migration de n\u0153uds:<\/p>\n\n\n\n<ul><li>Pour utiliser la propri\u00e9t\u00e9 `title` de l&#8217;entit\u00e9 node, vous devez \u00e9crire `@title`.<\/li><li>Pour utiliser le champ `field_body` du type de contenu `Page de base`, vous devez \u00e9crire `@field_body`.<\/li><li>Pour utiliser le pseudo-champ `my_temp_value`, vous devez \u00e9crire `@my_temp_value`.<\/li><\/ul>\n\n\n\n<p>Dans le pipeline de processus, ces valeurs peuvent \u00eatre utilis\u00e9es tout comme les constantes et les colonnes de la source. La seule restriction est qu&#8217;ils doivent \u00eatre r\u00e9gl\u00e9s avant d&#8217;\u00eatre utilis\u00e9s. Pour ceux qui sont familiers avec la fonction de&nbsp;<em>\u201cr\u00e9\u00e9crire les r\u00e9sultats\u201d<\/em>&nbsp;de&nbsp;<a href=\"https:\/\/understanddrupal.com\/fr\/articles\/quest-ce-quune-vue-dans-drupal-comment-fonctionnent-ils\">Vues<\/a>, c&#8217;est la m\u00eame id\u00e9e. Vous avez acc\u00e8s \u00e0 tout ce qui a \u00e9t\u00e9 d\u00e9fini pr\u00e9c\u00e9demment. Chaque fois que vous utilisez un nom entre guillemets et qu&#8217;il est pr\u00e9c\u00e9d\u00e9 d&#8217;une arobase, vous dites \u00e0 l&#8217;API Migrate de rechercher cet \u00e9l\u00e9ment dans la section process plut\u00f4t que dans la section source.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-migration-d-images-a-l-aide-du-plugin-image-import\">Migration d&#8217;images \u00e0 l&#8217;aide du plugin image_import<\/h2>\n\n\n\n<p>Pratiquons les concepts de constantes, de pseudo-champs, et de pipeline de processus de migration en modifiant l&#8217;exemple de l&#8217;entr\u00e9e pr\u00e9c\u00e9dente. Le module&nbsp;<a href=\"https:\/\/www.drupal.org\/project\/migrate_file\">Migrate Files<\/a>&nbsp;fournit un autre plugin de processus nomm\u00e9 `image_import&#8217;; qui vous permet de d\u00e9finir directement toutes les valeurs de sous-champ dans la configuration du plugin lui-m\u00eame.<\/p>\n\n\n\n<p>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. Il est suppos\u00e9 que Drupal a \u00e9t\u00e9 install\u00e9 en utilisant le profil d&#8217;installation `standard`. 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 constants and pseudofields` et son nom de machine est `ud_migrations_constants_pseudofields`. Le `id` de l&#8217;exemple de migration est `udm_constants_pseudofields`.&nbsp;<a href=\"https:\/\/understanddrupal.com\/fr\/articles\/ecrire-votre-premiere-migration-drupal\">Consultez cet article<\/a>&nbsp;pour savoir comment activer le module et ex\u00e9cuter la migration. Assurez-vous de t\u00e9l\u00e9charger et d&#8217;activer le module Migrate Files. Sinon, vous obtiendrez une erreur du type : \u201cIn DiscoveryTrait.php line 53: The &#8220;image_import&#8221; plugin does not exist. Valid plugin IDs for Drupal\\migrate\\Plugin\\MigratePluginManager are:&#8230;\u201d.. Voyons une partie de la d\u00e9finition de la&nbsp;<em>source<\/em>:<\/p>\n\n\n\n<p><code>Loading gist https:\/\/gist.github.com\/dinarcon\/6c4b5bdc5dae5455bd9641a05e3701a4<\/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 court profil et des d\u00e9tails sur l&#8217;image. Notez que cette fois-ci, la `photo_url` ne fournit pas d&#8217;URL absolue. Il s&#8217;agit plut\u00f4t d&#8217;un chemin relatif du domaine h\u00e9bergeant les images. Dans cet exemple, le domaine est `https:\/\/agaric.coop` de sorte que la valeur est stock\u00e9e dans la constante BASE_URL qui est ensuite utilis\u00e9e pour assembler une URL absolue valide pour l&#8217;image. De plus, il n&#8217;y a pas de description de photo, mais on peut en cr\u00e9er une en concat\u00e9nant certaines cha\u00eenes de caract\u00e8res. La constante PHOTO_DESCRIPTION_PREFIX stocke le pr\u00e9fixe \u00e0 ajouter au nom pour cr\u00e9er une description photo. Voyons maintenant la d\u00e9finition du&nbsp;<em>processus<\/em>:<\/p>\n\n\n\n<p><code>Loading gist https:\/\/gist.github.com\/dinarcon\/6c4b5bdc5dae5455bd9641a05e3701a4<\/code><\/p>\n\n\n\n<p>La propri\u00e9t\u00e9 de noeud `title` est d\u00e9finie directement \u00e0 la valeur de la colonne `name` de la source. Puis, deux pseudo-champs. `psf_image_url` stocke une URL absolue valide vers l&#8217;image en utilisant la constante BASE_URL et la colonne `photo_url` de la&nbsp;<em>source<\/em>. `psf_image_description` utilise la constante PHOTO_DESCRIPTION_PREFIX et la&nbsp;<em>colonne<\/em>&nbsp;`name` de la&nbsp;<em>source<\/em>&nbsp;pour stocker une description de l&#8217;image.<\/p>\n\n\n\n<p>Pour le champ `field_image`, le plugin de processus `image_import&#8217;; est utilis\u00e9. Cette fois, les sous-champs ne sont pas d\u00e9finies manuellement comme&nbsp;<a href=\"https:\/\/understanddrupal.com\/fr\/articles\/migrer-les-donnees-dans-les-sous-champs-drupal\">dans l&#8217;article pr\u00e9c\u00e9dent<\/a>. L&#8217;absence de la cl\u00e9 de configuration `id_only`, vous permet d&#8217;assigner des valeurs aux sous-champs simplement en configurant le plugin `image_import`. L&#8217;URL de l&#8217;image est d\u00e9finie dans la cl\u00e9 `source` et utilise le pseudo-champ `psf_image_url`. La cl\u00e9 `alt` permet de d\u00e9finir l&#8217;attribut alternatif de l&#8217;image et dans ce cas le pseudo champ `psf_image_description` est utilis\u00e9. Le sous-champ `title` d\u00e9finit le texte d&#8217;un sous-champ avec le m\u00eame nom et dans ce cas il est assign\u00e9 la valeur de la propri\u00e9t\u00e9 de noeud `title` qui a \u00e9t\u00e9 d\u00e9finie au d\u00e9but du pipeline de processus. Rappelez-vous qu&#8217;il ya plus que les pseudo-champs disponibles. Enfin, la configuration `width` et`height` utilise les colonnes de la source pour d\u00e9finir les valeurs des sous-champs correspondants.<\/p>\n\n\n\n<p>Qu&#8217;avez-vous appris dans le billet d&#8217;aujourd&#8217;hui ? Saviez-vous que vous pouvez d\u00e9finir des constantes dans votre source en tant qu&#8217;espaces r\u00e9serv\u00e9s de donn\u00e9es \u00e0 utiliser dans la section process ? Saviez-vous qu&#8217;il est possible de cr\u00e9er des pseudo-champs dans la section du processus pour stocker des donn\u00e9es interm\u00e9diaires pour les d\u00e9finitions qui suivent ? Vous \u00eates-vous d\u00e9j\u00e0 demand\u00e9 ce qu&#8217;est le pipeline du processus de migration et comment il fonctionne ? 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>Jusqu&#8217;\u00e0 pr\u00e9sent, nous avons appris \u00e0 \u00e9crire des migrations Drupal basiques et \u00e0 utiliser des plugins de processus pour transformer les donn\u00e9es afin de r\u00e9pondre au format attendu par la destination. Dans le post pr\u00e9c\u00e9dent, nous avons appris l&#8217;une des nombreuses approches de la migration des images. Dans l&#8217;exemple d&#8217;aujourd&#8217;hui, nous allons le changer un peu pour introduire deux nouveaux concepts de migration: les constantes et les pseudo-champs. Les deux peuvent \u00eatre utilis\u00e9s comme donn\u00e9es g\u00e9n\u00e9riques dans la ligne de temps de migration. Avec d&#8217;autres plugins de processus, ils vous permettent de construire des valeurs dynamiques qui peuvent \u00eatre utilis\u00e9es dans le cadre du pipeline de processus.<\/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>Utilisation de constantes et de pseudo-champs comme espaces r\u00e9serv\u00e9s de donn\u00e9es dans les migrations 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\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Utilisation de constantes et de pseudo-champs comme espaces r\u00e9serv\u00e9s de donn\u00e9es dans les migrations Drupal - Understand Drupal\" \/>\n<meta property=\"og:description\" content=\"Jusqu&#039;\u00e0 pr\u00e9sent, nous avons appris \u00e0 \u00e9crire des migrations Drupal basiques et \u00e0 utiliser des plugins de processus pour transformer les donn\u00e9es afin de r\u00e9pondre au format attendu par la destination. Dans le post pr\u00e9c\u00e9dent, nous avons appris l&#039;une des nombreuses approches de la migration des images. Dans l&#039;exemple d&#039;aujourd&#039;hui, nous allons le changer un peu pour introduire deux nouveaux concepts de migration: les constantes et les pseudo-champs. Les deux peuvent \u00eatre utilis\u00e9s comme donn\u00e9es g\u00e9n\u00e9riques dans la ligne de temps de migration. Avec d&#039;autres plugins de processus, ils vous permettent de construire des valeurs dynamiques qui peuvent \u00eatre utilis\u00e9es dans le cadre du pipeline de processus.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/\" \/>\n<meta property=\"og:site_name\" content=\"Understand Drupal\" \/>\n<meta property=\"article:published_time\" content=\"2019-08-05T23:00:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-04-24T05:55:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/constants_pseudofield_pipeline_0.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=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/\"},\"author\":{\"name\":\"Mauricio Dinarte\",\"@id\":\"https:\/\/understanddrupal.com\/#\/schema\/person\/73fa828d2b498d144def1204a114b7d3\"},\"headline\":\"Utilisation de constantes et de pseudo-champs comme espaces r\u00e9serv\u00e9s de donn\u00e9es dans les migrations Drupal\",\"datePublished\":\"2019-08-05T23:00:50+00:00\",\"dateModified\":\"2022-04-24T05:55:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/\"},\"wordCount\":1944,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/understanddrupal.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/constants_pseudofield_pipeline_0.jpeg\",\"keywords\":[\"migrations\"],\"articleSection\":[\"Non classifi\u00e9(e)\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/\",\"url\":\"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/\",\"name\":\"Utilisation de constantes et de pseudo-champs comme espaces r\u00e9serv\u00e9s de donn\u00e9es dans les migrations Drupal - Understand Drupal\",\"isPartOf\":{\"@id\":\"https:\/\/understanddrupal.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/constants_pseudofield_pipeline_0.jpeg\",\"datePublished\":\"2019-08-05T23:00:50+00:00\",\"dateModified\":\"2022-04-24T05:55:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/#primaryimage\",\"url\":\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/constants_pseudofield_pipeline_0.jpeg\",\"contentUrl\":\"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/constants_pseudofield_pipeline_0.jpeg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/understanddrupal.com\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Utilisation de constantes et de pseudo-champs comme espaces r\u00e9serv\u00e9s de donn\u00e9es dans les migrations 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":"Utilisation de constantes et de pseudo-champs comme espaces r\u00e9serv\u00e9s de donn\u00e9es dans les migrations 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\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/","og_locale":"fr_FR","og_type":"article","og_title":"Utilisation de constantes et de pseudo-champs comme espaces r\u00e9serv\u00e9s de donn\u00e9es dans les migrations Drupal - Understand Drupal","og_description":"Jusqu'\u00e0 pr\u00e9sent, nous avons appris \u00e0 \u00e9crire des migrations Drupal basiques et \u00e0 utiliser des plugins de processus pour transformer les donn\u00e9es afin de r\u00e9pondre au format attendu par la destination. Dans le post pr\u00e9c\u00e9dent, nous avons appris l'une des nombreuses approches de la migration des images. Dans l'exemple d'aujourd'hui, nous allons le changer un peu pour introduire deux nouveaux concepts de migration: les constantes et les pseudo-champs. Les deux peuvent \u00eatre utilis\u00e9s comme donn\u00e9es g\u00e9n\u00e9riques dans la ligne de temps de migration. Avec d'autres plugins de processus, ils vous permettent de construire des valeurs dynamiques qui peuvent \u00eatre utilis\u00e9es dans le cadre du pipeline de processus.","og_url":"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/","og_site_name":"Understand Drupal","article_published_time":"2019-08-05T23:00:50+00:00","article_modified_time":"2022-04-24T05:55:47+00:00","og_image":[{"url":"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/constants_pseudofield_pipeline_0.jpeg"}],"author":"Mauricio Dinarte","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Mauricio Dinarte","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/#article","isPartOf":{"@id":"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/"},"author":{"name":"Mauricio Dinarte","@id":"https:\/\/understanddrupal.com\/#\/schema\/person\/73fa828d2b498d144def1204a114b7d3"},"headline":"Utilisation de constantes et de pseudo-champs comme espaces r\u00e9serv\u00e9s de donn\u00e9es dans les migrations Drupal","datePublished":"2019-08-05T23:00:50+00:00","dateModified":"2022-04-24T05:55:47+00:00","mainEntityOfPage":{"@id":"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/"},"wordCount":1944,"commentCount":0,"publisher":{"@id":"https:\/\/understanddrupal.com\/#organization"},"image":{"@id":"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/#primaryimage"},"thumbnailUrl":"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/constants_pseudofield_pipeline_0.jpeg","keywords":["migrations"],"articleSection":["Non classifi\u00e9(e)"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/","url":"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/","name":"Utilisation de constantes et de pseudo-champs comme espaces r\u00e9serv\u00e9s de donn\u00e9es dans les migrations Drupal - Understand Drupal","isPartOf":{"@id":"https:\/\/understanddrupal.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/#primaryimage"},"image":{"@id":"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/#primaryimage"},"thumbnailUrl":"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/constants_pseudofield_pipeline_0.jpeg","datePublished":"2019-08-05T23:00:50+00:00","dateModified":"2022-04-24T05:55:47+00:00","breadcrumb":{"@id":"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/#primaryimage","url":"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/constants_pseudofield_pipeline_0.jpeg","contentUrl":"https:\/\/understanddrupal.com\/wp-content\/uploads\/2022\/01\/constants_pseudofield_pipeline_0.jpeg"},{"@type":"BreadcrumbList","@id":"https:\/\/understanddrupal.com\/fr\/blog\/utilisation-constantes-et-pseudo-champs-espaces-reserves-de-donnees-migrations-drupal\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/understanddrupal.com\/fr\/"},{"@type":"ListItem","position":2,"name":"Utilisation de constantes et de pseudo-champs comme espaces r\u00e9serv\u00e9s de donn\u00e9es dans les migrations 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\/3704"}],"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=3704"}],"version-history":[{"count":1,"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/posts\/3704\/revisions"}],"predecessor-version":[{"id":5354,"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/posts\/3704\/revisions\/5354"}],"wp:attachment":[{"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/media?parent=3704"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/categories?post=3704"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/understanddrupal.com\/fr\/wp-json\/wp\/v2\/tags?post=3704"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}