Intento agregar muchos términos (~ 200) a un vocabulario, pero no puedo encontrar ningún módulo de importación que esté actualizado para Drupal 8, y parece que las funciones para hacer esto en Drupal 7 no existen en Drupal 8. Entonces, ¿alguien puede señalarme en la dirección correcta para hacer esto?
Intenté hacerlo entity_create, como se sugiere en los comentarios, con este código:
$term_create = entity_create('taxonomy_term', array('name' => 'test', 'vocabulary_name' => 'client'));
pero recibí este error:
Drupal\Core\Entity\EntityStorageException: Missing bundle for entity type taxonomy_term in Drupal\Core\Entity\FieldableEntityStorageControllerBase->create() (line 65 of core/lib/Drupal/Core/Entity/FieldableEntityStorageControllerBase.php).
¿Algunas ideas?
taxonomy-terms
8
Samsquanch
fuente
fuente

entity_create()$term_create = entity_create('taxonomy_term', array('name' => 'test', 'vocabulary_name' => 'client'));pero recibí el errorDrupal\Core\Entity\EntityStorageException: Missing bundle for entity type taxonomy_term in Drupal\Core\Entity\FieldableEntityStorageControllerBase->create() (line 65 of core/lib/Drupal/Core/Entity/FieldableEntityStorageControllerBase.php).. ¿Alguna idea?viden lugar devocabulary_name. Parece que la columna todavía estávidadentrotaxonomy_term_data, pero es el nombre del vocabulario en lugar de la identificación ahoraRespuestas:
Sabes que quieres algo del módulo de taxonomía, así que primero debes buscar
Drupal\taxonomy\Entity, o el directorio correspondiente, encontrarás laTermclase allí. Ahora mire la anotación, dice@ContentEntityTypey allí:Entonces, lo que quieres es
porque la
labelclave de entidad esnamey labundleclave de entidad esvid. Agregué una->save()llamada y supongo que también querías guardarla.fuente
$term = \Drupal\taxonomy\Entity\Term::create(array( 'name' => 'whatever', 'vid' => 'tags', )); $term->save();me da un error grave: Llame al método indefinido Drupal \ taxonomy \ Entity \ Term :: getTypeEn este momento, debe agregar el término de otra manera (en comparación con esta respuesta). Primero, en su archivo, comience, debe escribir
Porque la clase de término aparece en Drupal \ taxonomy \ Entity. Y no necesita pasar taxonomy_term parametr a
porque solo se necesita un parámetro (matriz con valores) (debajo del código listado para este método en el módulo de taxonomía)
Entonces el ejemplo final es
fuente
Entity::save()devuelve un int. Las constantesSAVED_NEWoSAVED_UPDATEDdependiendo de la operación realizada. Sin embargo, si elimina->save()y agrega$term->save();, verá que$termse actualiza con la información que se guardó en la base de datos. Ejemplo que ahora puede hacer$tid = $term->tid->value;Las otras respuestas usan
entity_create(), que funciona, pero no es tan agradable.fuente
Con
entityTypeManager():fuente
Es posible que desee ver cómo devel / devel_generate hace esto.
De devel_generate :
fuente
Antes de crear un término, es mejor verificar si existe, aquí está el código:
Fuente: https://www.btmash.com/article/2016-04-26/saving-and-retrieving-taxonomy-terms-programmatic-drupal-8
fuente