Próbuję dodać wiele terminów (~ 200) do słownictwa, ale nie mogę znaleźć żadnych modułów importu, które zostałyby zaktualizowane dla Drupal 8, i wydaje się, że funkcje umożliwiające to w Drupal 7 nie istnieją w Drupal 8. Czy ktoś może skierować mnie w dobrym kierunku?
Próbowałem to zrobić entity_create
, zgodnie z sugestiami w komentarzach, za pomocą tego kodu:
$term_create = entity_create('taxonomy_term', array('name' => 'test', 'vocabulary_name' => 'client'));
ale dostałem ten błąd:
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).
Jakieś pomysły?
taxonomy-terms
8
Samsquanch
źródło
źródło
entity_create()
$term_create = entity_create('taxonomy_term', array('name' => 'test', 'vocabulary_name' => 'client'));
ale dostałem błądDrupal\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).
- jakieś pomysły?vid
zamiastvocabulary_name
. Wygląda na to, że kolumna wciąż jestvid
wtaxonomy_term_data
środku, ale teraz jest to nazwa słownika zamiast idOdpowiedzi:
Wiesz, że chcesz czegoś z modułu taksonomii, więc najpierw musisz zajrzeć do
Drupal\taxonomy\Entity
- lub odpowiedniego katalogu -Term
tam znajdziesz klasę. Teraz spójrz na adnotację, która mówi@ContentEntityType
:Więc czego chcesz
ponieważ
label
klucz encji jest,name
abundle
klucz encji jestvid
. Dodałem->save()
telefon, a także zakładam, że też chciałeś go zapisać.źródło
$term = \Drupal\taxonomy\Entity\Term::create(array( 'name' => 'whatever', 'vid' => 'tags', )); $term->save();
daje mi błąd krytyczny: Wywołanie niezdefiniowanej metody Drupal \ taksonomia \ Entity \ Term :: getTypeW tym momencie powinieneś dodać termin w nieco inny sposób (w porównaniu z tą odpowiedzią) Przede wszystkim w swoim pliku zacznij od napisania
Ponieważ klasa Term wymieniona w Drupal \ taksonomia \ Jednostka. I nie musisz przekazywać parametru taksonomia_term do
ponieważ potrzebny jest tylko jeden parametr (tablica z wartościami) (poniżej wymieniony kod dla tej metody w module taksonomii)
Ostatnim przykładem jest
źródło
Entity::save()
zwraca liczbę całkowitą. StałeSAVED_NEW
lub wSAVED_UPDATED
zależności od wykonanej operacji. Jeśli jednak usuniesz->save()
i dodasz$term->save();
, zobaczysz, że$term
jest aktualizowany o informacje zapisane w bazie danych. Przykład, który możesz teraz zrobić$tid = $term->tid->value;
Inne odpowiedzi wykorzystują
entity_create()
, co działa, ale nie jest tak przyjemne.źródło
Z
entityTypeManager()
:źródło
Możesz przyjrzeć się, jak robi to devel / devel_generate.
Od devel_generate :
źródło
Przed utworzeniem terminu lepiej sprawdzić, czy istnieje, oto kod:
Źródło: https://www.btmash.com/article/2016-04-26/saving-and-retrieving-taxonomy-terms-programmatically-drupal-8
źródło