Ich versuche, einem Vokabular viele Begriffe (~ 200) hinzuzufügen, aber ich kann keine Importmodule finden, die für Drupal 8 aktualisiert wurden, und es scheint, dass die Funktionen dafür in Drupal 7 nicht vorhanden sind Drupal 8. Kann mich jemand in die richtige Richtung weisen, um dies zu tun?
Ich habe versucht, dies entity_create
, wie in den Kommentaren vorgeschlagen, mit folgendem Code zu tun :
$term_create = entity_create('taxonomy_term', array('name' => 'test', 'vocabulary_name' => 'client'));
aber ich habe diesen Fehler bekommen:
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).
Irgendwelche Ideen?
taxonomy-terms
8
Samsquanch
quelle
quelle
entity_create()
$term_create = entity_create('taxonomy_term', array('name' => 'test', 'vocabulary_name' => 'client'));
aber ich habe den Fehler erhaltenDrupal\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).
- Irgendwelche Ideen?vid
anstelle vonvocabulary_name
. Sieht so aus, als wäre die Spalte nochvid
intaxonomy_term_data
, aber es ist jetzt der Vokabelname anstelle von idAntworten:
Sie wissen, dass Sie etwas aus dem Taxonomiemodul wollen, also müssen Sie zuerst nachsehen
Drupal\taxonomy\Entity
- oder in das entsprechende Verzeichnis - Sie werden dieTerm
Klasse dort finden. Nun sieh dir die Anmerkung an, heißt es@ContentEntityType
und dort drin :Also, was Sie wollen, ist
weil der
label
Entitätsschlüsselname
und derbundle
Entitätsschlüssel istvid
. Ich habe einen->save()
Anruf hinzugefügt und ich nehme an, dass Sie ihn auch speichern wollten.quelle
$term = \Drupal\taxonomy\Entity\Term::create(array( 'name' => 'whatever', 'vid' => 'tags', )); $term->save();
gibt mir schwerwiegenden Fehler: Aufruf der undefinierten Methode Drupal \ taxonomy \ Entity \ Term :: getTypeZu diesem Zeitpunkt sollten Sie den Begriff auf eine andere Art und Weise hinzufügen (im Vergleich zu dieser Antwort). Zunächst müssen Sie in Ihre Datei schreiben
Weil die Termklasse unter Drupal \ Taxonomy \ Entity aufgeführt ist. Und Sie müssen taxonomy_term parametr nicht an übergeben
da nur ein Parameter benötigt wird (Array mit Werten) (unten stehender Code für diese Methode im Taxonomiemodul)
Das letzte Beispiel ist also
quelle
Entity::save()
ein int zurückgegeben wird. Entweder die KonstantenSAVED_NEW
oderSAVED_UPDATED
abhängig von der ausgeführten Operation. Wenn Sie jedoch das entfernen->save()
und hinzufügen$term->save();
, werden Sie sehen, dass$term
es mit den Informationen aktualisiert wird, die in der Datenbank gespeichert wurden. Beispiel, das Sie jetzt tun können$tid = $term->tid->value;
Die anderen Antworten verwenden
entity_create()
, was funktioniert, aber nicht ganz so schön ist.quelle
Mit
entityTypeManager()
:quelle
Vielleicht möchten Sie sich ansehen, wie devel / devel_generate dies tut.
Aus devel_generate :
quelle
Bevor Sie einen Begriff erstellen, sollten Sie überprüfen, ob er existiert. Hier ist der Code:
Quelle: https://www.btmash.com/article/2016-04-26/saving-and-retrieving-taxonomy-terms-programmatically-drupal-8
quelle