drupal 8 – Agregar programáticamente un término de taxonomía como referencia de entidad en una entidad personalizada

Pregunta:

Realmente estoy luchando por agregar un taxonomy_term como una referencia de entidad a una entidad personalizada que he creado mediante programación.

Aquí está mi configuración basada en BaseFieldDefinition (el nombre del vocabulario es "specialite":

$fields['speciality_field'] = BaseFieldDefinition::create('entity_reference')
  ->setLabel(t('speciality'))
  ->setRevisionable(TRUE)
  ->setSetting('target_type', 'taxonomy_term')
  >setSetting('handler_settings', ['target_bundles' => ['specialite' => 'specialite']])
  ->setSetting('handler', 'default')
  ->setTranslatable(TRUE)
  ->setDisplayOptions('view', array(
    'label' => 'hidden',
    'type' => 'author',
    'weight' => 0,
  ))
  ->setDisplayOptions('form', array(
    'type' => 'entity_reference_autocomplete',
    'weight' => 5,
    'settings' => array(
      'match_operator' => 'CONTAINS',
      'size' => '10',
      'autocomplete_type' => 'tags',
      'placeholder' => '',
    ),
  ))
  ->setDisplayConfigurable('form', TRUE)
  ->setDisplayConfigurable('view', TRUE);

Este fragmento de código no funciona, ¿podría ayudarme a encontrar lo que me falta o redirigirme a una buena documentación que explique diferentes valores para handler_settings?

Muchas gracias.

Respuesta:

Bueno, gracias, la respuesta de 4k4 fue muy útil. Mi problema era que para mi campo quería hacer referencia a un término de taxonomía, ya lo había creado y lo había dejado directamente en la base de datos. Parece que no es la forma correcta de hacer esto, así que estaba teniendo problemas para recrearlo. Así que desinstalé mi módulo (después de eliminar todos los datos) y lo reinstalé, y luego esta pieza de código funcionó perfectamente para tener una referencia a un término de taxonomía:

$fields['speciality'] = BaseFieldDefinition::create('entity_reference')
  ->setSetting('target_type', 'taxonomy_term')
  ->setSetting('handler', 'default:taxonomy_term')
  ->setSetting('handler_settings', 
      array(
    'target_bundles' => array(
     'specialite' => 'specialite'
    )))
  ->setDisplayOptions('view', array(
    'label' => 'hidden',
    'type' => 'author',
    'weight' => 0,
  ))
  ->setDisplayOptions('form', array(
    'type' => 'entity_reference_autocomplete',
    'weight' => 3,
    'settings' => array(
      'match_operator' => 'CONTAINS',
      'size' => '10',
      'autocomplete_type' => 'tags',
      'placeholder' => '',
    ),
  ))
  ->setDisplayConfigurable('form', TRUE)
  ->setDisplayConfigurable('view', TRUE);

PD: specialite es mi el nombre de mi vocabulario

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım