Custom Entity, referencia a una taxonomía

Cuando estamos definiendo los campos de una entidad personalizada (Custom Entity), puede surgirnos la necesidad de definir un campo que sea una referencia a una taxonomía. Esto, a priori, parece sencillo si lo hacemos a través de la UI, pero a nivel de código no lo es.

Una referencia a una taxonomía no es lo mismo que a una entidad. Aunque en Drupal sea en esencia «lo mismo». Si definimos una referencia a una entidad para que apunte a un vocabulario o taxonomía, el sistema nos peta. La manera de definirlo es apuntando al bundle específico de «taxonomy_term» que es el contenedor de taxonomías.

Vayamos al grano. A continuación, muestro el código que haría falta para que esto funcione.

$fields['rankid'] = BaseFieldDefinition::create('entity_reference')
      ...
      ->setSetting('target_type', 'taxonomy_term')
      ->setSetting('handler_settings', ['target_bundles' => ['custom_vocabulary' => 'NOMBRE_DEL_VOCABULARIO']])
      ...

Este código está descontextualizado porque quiero centrarme en las entradas setSetting. En la primera se indica que el tipo de referencia es a la entidad «taxonomy_term»; y en el segundo, se indica qué bundle es. Lo que habría que cambiar está en español y mayúsculas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.