Saya ingin mengambil istilah taksonomi dari kosakata tertentu di Drupal 8.
Tampaknya saya masih bisa melakukannya menggunakan taxonomy_get_tree
tetapi sudah usang.
Saya sekarang harus menggunakan TermStorageInterface :: loadTree
Saya mencoba mengakses fungsi ini dari Block
tetapi saya tidak mengerti bagaimana membuat instance TermStorageInterface
kelas.
Saya mencoba mengakses fungsi secara langsung tetapi itu bukan fungsi statis:
TermStorageInterface::loadTree('categories')
Saya mencoba membuat instance kelas tetapi itu memberi tahu saya Cannot instantiate interface Drupal\taxonomy\TermStorageInterface
$test = new TermStorageInterface();
Saya tidak mengerti bagaimana kelas ini bekerja dan bagaimana saya dapat mengakses tautan taksonomi. Saya pikir saya kehilangan sebagian besar pemahaman bagaimana Drupal bekerja.
sumber
Ini yang saya gunakan untuk membuat daftar tag:
sumber
Kesalahan yang Anda dapatkan adalah karena Anda mencoba membuat instance antarmuka, yang bukan sesuatu yang diizinkan oleh PHP. Antarmuka PHP menjelaskan metode yang harus diterapkan oleh kelas untuk kasus-kasus tertentu, tetapi mereka tidak dapat digunakan untuk membuat objek, misalnya dengan
new InterfaceName()
.Sekarang yang
taxonomy_get_tree()
telah dihapus, dan layanan manajer entitas telah ditinggalkan, Anda perlu menggunakan kode berikut.Tidak perlu menggunakan
\Drupal::getContainer()
karena\Drupal
memperlihatkan metode pembantu untuk mendapatkan layanan tipe manajer entitas.sumber
Memuat menggunakan nama mesin dari kosakata (vid):
sumber
\ Drupal :: entityManager () sudah tidak digunakan lagi sehingga ini bekerja untuk saya
sumber
Saya baru saja menulis sebuah fungsi, merasa bebas untuk mengedit dan menggunakan :) Saya membutuhkan id dari istilah tersebut, tetapi Anda dapat mengembalikan apa pun yang Anda inginkan.
sumber
$query->condition
setelah$query->execute()
tidak berpengaruh. Juga jika istilah pertama bukan yang benar, foreach akan mengembalikan nol daripada memeriksa istilah berikutnya. (Untuk kasus penggunaan Anda, Anda mungkin dapat menggunakan taxonomy_term_load_multiple_by_name ?)Berikut adalah contoh D8 cara mengakses istilah taksonomi berdasarkan nama mesin kosa kata:
Untuk memuat seluruh entitas, gunakan:
loadTree('categories', 0, NULL, TRUE)
.sumber
Jika Anda membutuhkan entitas berjangka, Anda dapat menggunakan 'loadByProperties ()'.
sumber
sumber
Anda dapat melihat deskripsi lengkap di sini https://drupaltreasure.blogspot.com/2017/04/drupal-8-get-list-of-all-voacbs.html
sumber