On a paragraph type, I have a field I want to migrate to a new field of type “list_string”. To do that in the deployment and like our automatic deployment begin by an update of the database follow by importation of configurations, I want to create the new field programmatically before to do the migration in another hook_update.
I’m using the example of this article https://www.metaltoad.com/blog/programmatically-importing-drupal-8-field-configurations which is perfect except I have a problem because my new field is of type list_string. My configuration for field.storage is:
langcode: fr status: true dependencies: module: - options - paragraphs id: paragraph.field_types_link field_name: field_types_link entity_type: paragraph type: list_string settings: allowed_values: - value: anchor label: Ancre - value: internal label: Interne - value: external label: Externe allowed_values_function: '' module: options locked: false cardinality: 1 translatable: true indexes: { } persist_with_no_fields: false custom_storage: false
When I create my new field based on my configuration file like that:
$field_storage_link = Drupal::service('config.storage.sync')->read('field.storage.paragraph.field_types_link'); Drupal::entityTypeManager()->getStorage('field_storage_config') ->create($field_storage_link) ->save();
I have this error.
[error] The configuration property settings.allowed_values.0.label.0 doesn’t exist.
If I remove the list of allowed_values, it works and I can add my field to paragraphes bundles but in this case, I’m not able to do my migration properly because the allowed_values of my field are empty and I don’t know how to update it programmatically. Someone can explain what’s is the problem in my code and how to fix it?