Cara membuat entitas kustom di Drupal 8 [ditutup]


10

Saya memiliki proyek pribadi besar yang dibangun di atas Drupal 7 yang memiliki banyak entitas khusus. Saya ingin mulai memutakhirkan proyek menjadi Drupal 8 tetapi inti Drupal 8 yang ditulis ulang terlalu besar bagi saya untuk dapat memutar kepala tanpa dokumentasi (+ Symfony sama sekali tidak diketahui oleh saya, saya hanya seorang pria Drupal sederhana) .

Saya mencoba membuat entitas kustom hanya dengan melihat beberapa kode modul inti tetapi tidak berhasil.

Bisakah Anda mengarahkan saya ke beberapa artikel tentang entitas kustom di Drupal 8 (saya belum dapat menemukan satu pun) atau memberi saya beberapa panduan langkah-demi-langkah dasar?

Terima kasih.

entities  8 

1
Bisakah Anda mengedit pertanyaan untuk menambahkan sedikit tentang seberapa jauh Anda punya, dan persis di mana Anda berjuang? Melihat kode khusus yang bermasalah dengan Anda akan ideal. Membangun entitas khusus bukanlah tugas kecil - itu mungkin pertanyaan yang terlalu luas, baik untuk format situs, dan untuk peluang Anda mendapatkan jawaban yang baik. Harap diingat bahwa permintaan tautan / tutorial khusus di luar topik di sini hanya untuk alasan itu. Lebih baik memecahnya sepotong demi sepotong, dan bertanya tentang potongan-potongan kecil itu. Terima kasih
Clive

Selain itu, jika Anda tidak tahu Symfony apa pun, Anda mungkin akan kesulitan menerapkan pengetahuan D7 ke D8. Banyak hal telah berubah secara substansial (karena saya yakin Anda sudah tahu). Saya sangat merekomendasikan membaca sebanyak mungkin buku Symfony sebelum memulai perjalanan Anda; memiliki landasan semacam itu akan membuat transisi jauh lebih lancar, percayalah. Di samping yang lain, saya menemukan entitas Kategori dan Pesan dalam modul Kontak inti menjadi titik awal yang sangat baik untuk belajar
Clive

@Clive Terlepas dari validasi API Entity API di Drupal 8 hampir tidak ada hubungannya dengan Symfony, jadi saya tidak berpikir itu relevan. Kalau tidak setuju dengan pertanyaan yang terlalu luas, tetapi saya mencoba memberikan tinjauan, pertanyaan yang lebih spesifik kemudian dapat dijawab secara lebih rinci. Dan membantu memiliki titik awal, karena itu tidak terlalu jelas jika Anda tidak tahu D8.
Berdir

@Berdir yang saya maksud D7 -> D8 secara umum, bukan untuk entitas khusus. Mengetahui tentang perutean dan layanan Symfony, misalnya, membuat memahami kode inti lebih mudah secara umum. Ngomong-ngomong, tulisan yang bagus, tidak ada alasan untuk berpikir untuk menutup pertanyaan ini sekarang IMO, itu adalah sumber yang berharga (bahkan jika itu sedikit berlebihan)
Clive

Jawaban:


13

Saya sedang mengerjakan dokumentasi API Entitas di sini: https://drupal.org/developing/api/entity .

Pertanyaannya terlalu besar untuk dijawab secara terperinci, dan itu tergantung pada apakah Anda memerlukan konten atau entitas konfigurasi. Dengan asumsi Anda menginginkan entitas konten (disimpan dalam basis data, dapat diisi / direvisi / ..., detail di tautan di atas), Anda perlu melakukan sesuatu seperti ini, dokumentasi yang ditautkan di atas pada akhirnya akan mencakup setiap langkah, termasuk tutorial, sekarang juga , itu hanya mencakup langkah pertama.

  1. Berikan kelas entitas dan tambahkan anotasi yang diperlukan untuk memaparkannya sebagai entitas.
  2. Berikan tabel yang diperlukan, Anda tidak perlu banyak berubah jika Anda sudah memiliki skema 7.x Anda, tetapi Anda ingin menambahkan kolom uuid dan mungkin langcode jika entitas Anda memiliki bahasa / dapat diterjemahkan. Lihat contoh simpul yang ditautkan pada langkah jika Anda ingin membuat beberapa bidang dasar (properti) dapat diterjemahkan atau direvisi, Anda saat ini perlu menyediakan tabel yang diperlukan sendiri.
  3. Berikan definisi bidang dasar dalam metode baseFieldDefinitions () Anda. . Perhatikan bahwa cara kerjanya akan berubah di https://drupal.org/node/2047229 (dari array ke kelas).
  4. Terapkan metode yang diperlukan sebelum / sesudah Simpan / muat / Hapus jika Anda memiliki logika khusus yang perlu terjadi misalnya sebelum menyimpan suatu entitas (seperti memperbarui stempel waktu yang diubah).
  5. Terapkan pengontrol akses jika Anda memiliki logika akses non-sepele dan menimpa metode checkAccess () dan checkCreateAccess () atau tentukan admin_permission dalam anotasi Anda jika Anda hanya memiliki satu izin yang memungkinkan akses penuh.
  6. Disarankan meskipun tidak secara teknis diperlukan untuk menyediakan antarmuka untuk kelas entitas Anda (misalnya NodeInterface untuk Node) yang mencakup metode yang berguna (biasanya get / set / isSomething ()) untuk bidang dasar Anda, sehingga Anda dapat mengetikkan petunjuk pada antarmuka dan dapatkan pelengkapan otomatis untuk metode tersebut.

Tergantung pada apa yang Anda butuhkan, juga akan ada langkah-langkah lebih lanjut, seperti mendefinisikan formulir yang diperlukan, mungkin pengendali render dan sebagainya, tetapi itu mungkin harus menjadi pertanyaan terpisah jika Anda memerlukan informasi lebih lanjut.

Catatan:

  • Entitas config pada dasarnya serupa, kecuali Anda harus menggunakan pengontrol penyimpanan config ( https://drupal.org/node/2119905 akan membuat ini lebih mudah), Anda tidak perlu mendefinisikan skema tabel (tentu saja) tetapi Anda harus memberikan file skema konfigurasi, lihat misalnya untuk kosa kata taksonomi atau tipe simpul.
  • Entitas konten tidak memiliki bidang dasar yang didefinisikan sebagai properti publik atau yang dilindungi, sebaliknya, mereka dikelola secara otomatis dalam properti nilai dan bidang. Akses mereka baik melalui get () / set () atau metode sulap yang sesuai. ($ node-> title sama dengan $ node-> get ('title')).
  • Bantuan pada dokumentasi akan sangat disambut baik. Saya telah membuat garis besar dasar untuk konten / struktur yang ingin saya miliki, jadi buat saja halaman baru dan mulai misalnya saya juga tertarik memiliki tutorial yang disederhanakan, untuk entitas konfigurasi, sudah ada satu di sini yang sudah saya miliki. akan pindah ke dokumentasi entitas saat siap: https://drupal.org/node/1809494
  • Core memiliki cukup banyak implementasi entitas konten, jika Anda ingin melihat contoh kerja: Node, User, Term, Comment, CustomBlock, ... seperti yang dijelaskan pada artikel di langkah 1, Anda selalu dapat menemukan jenis entitas yang disediakan oleh modul dalam ruang nama Entity.
  • @fago baru saja memberikan presentasi tentang Entity API di DrupalCamp Vienna akhir pekan ini, mencakup banyak hal yang saya tulis di sini dan banyak lagi.

1
generator kode drupal cukup berguna - >> github.com/Chi-teck/drupal-code-generator
rémy

1
drupalconsole.com - juga penolong yang baik (Alat untuk menghasilkan kode boilerplate, berinteraksi dengan dan men-debug Drupal.)
milkovsky
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.