Drupal 8'de özel varlık nasıl oluşturulur [kapalı]


10

Çok özel varlıkları olan Drupal 7 üzerine kurulu büyük bir kişisel projem var. Projeyi Drupal 8'e yükseltmeye başlamak istiyorum, ancak tamamen yeniden yazılan Drupal 8 çekirdeği, herhangi bir belge olmadan başımı döndürmek için çok büyük (+ Symfony benim için tamamen bilinmiyor, ben sadece basit bir Drupal-sadece adamım) .

Sadece bazı çekirdek modüller kodunu bakarak ama herhangi bir başarı olmadan özel bir varlık oluşturmaya çalıştım.

Beni Drupal 8'deki özel varlıklar hakkındaki bazı makalelere yönlendirebilir misin (tek bir tane bulamadım) veya bana bazı temel adım adım kılavuzlar verebilir misiniz?

Teşekkürler.

entities  8 

1
Ne kadar uzaklığa ve tam olarak nerede mücadele ettiğine dair biraz bilgi eklemek için soruyu düzenleyebilir misin? Sorun yaşadığınız belirli kodu görmek ideal olacaktır. Özel bir varlık oluşturmak küçük bir görev değildir - hem site biçimi hem de iyi bir yanıt alma şansınız için muhtemelen çok geniş bir soru. Lütfen, bu nedenle link / öğretici taleplerinin burada konu dışı olduğunu unutmayın. Parça parça parçalamak ve bu küçük parçalar hakkında sorular sormak daha iyidir. Teşekkürler
Clive

Bir yana, herhangi bir Symfony bilmiyorsanız muhtemelen D7 bilginizi D8'e uygulamakta zorlanacaksınız. İşler oldukça değişti (zaten bildiğinizden eminim). Yolculuğunuza başlamadan önce olabildiğince Symfony kitabını okumanızı şiddetle tavsiye ederim ; topraklama bu tür sahip geçişin yapacak çok daha düzgün, güven bana. Başka bir kenara, çekirdek Temas modülündeki Kategori ve Mesaj varlıkları öğrenme için çok iyi bir başlangıç ​​noktası buldum
Clive

@Clive Doğrulama API'sı dışında, Drupal 8'de Entm API'sinin Symfony ile hemen hemen hiçbir ilgisi yoktur, bu yüzden bunun alakalı olduğunu düşünmüyorum. Aksi takdirde sorunun çok geniş olduğuna katılıyorum, ancak genel bir bakış sunmaya çalıştım, daha spesifik sorular daha ayrıntılı olarak cevaplanabilir. Ve bir başlangıç ​​noktasına sahip olmanıza yardımcı olur, çünkü D8'i bilmiyorsanız çok açık değildir.
Berdir

@Berdir D7 -> D8 demek istedim, özellikle işletmeler için değil. Örneğin Symfony yönlendirme ve hizmetlerini bilmek, temel kodu anlamayı genel olarak çok daha kolay hale getirir. Bu arada harika bir yazı, bu soruyu şimdi IMO'yu kapatmayı düşünmek için hiçbir neden yok, bu değerli bir kaynak (biraz geniş olsa bile)
Clive

Yanıtlar:


13

Burada Entity API belgeleri üzerinde çalışıyorum: https://drupal.org/developing/api/entity .

Soru ayrıntılı olarak cevaplamak için çok büyük ve içeriğe veya yapılandırma varlıklarına ihtiyacınız olduğuna bağlı. İçerik varlıklarını istediğinizi varsayarsak (veritabanında depolanabilir, değiştirilebilir / revize edilebilir / ..., yukarıdaki bağlantıdaki ayrıntılar), bunun gibi bir şey yapmanız gerekir, yukarıda bağlantılı belgeler sonunda öğreticiler de dahil olmak üzere her adımı kapsayacaktır. , yalnızca ilk adımları kapsar.

  1. Bir varlık sınıfı sağlayın ve onu varlık olarak göstermek için gerekli ek açıklamaları ekleyin.
  2. Gerekli tabloları sağlayın, 7.x şemanıza zaten sahipseniz çok fazla değişiklik yapmanız gerekmez, ancak varlığınızın bir dili varsa / çevrilebilirse uuid ve muhtemelen bir langcode sütunu eklemek istersiniz. Bazı taban alanlarını (özellikleri) çevrilebilir veya revize edilebilir hale getirmek istiyorsanız, şu anda gerekli tabloları kendiniz sağlamanız gerekir.
  3. BaseFieldDefinitions () yönteminizde temel alan tanımlarını girin. . Bunun çalışma biçiminin https://drupal.org/node/2047229 (dizilerden sınıflara) olarak değişeceğini unutmayın .
  4. Örneğin, bir varlığı kaydetmeden önce (değişen zaman damgasını güncellemek gibi) olması gereken özel mantığınız varsa, gerekli ön / sonrası Kaydet / yükle / Sil yöntemlerini uygulayın.
  5. Önemsiz erişim mantığınız varsa bir erişim denetleyicisi uygulayın ve checkAccess () ve checkCreateAccess () yöntemlerini geçersiz kılın veya tam erişime izin veren tek bir izniniz varsa ek açıklamanızdaki admin_permission değerini belirtin.
  6. Varlık sınıfınız için (örneğin Düğüm için NodeInterface) temel alanlarınız için yararlı (genellikle get / set / isSomething ()) yöntemleri içeren bir arabirim sağlamanız teknik olarak gerekli olmamakla birlikte, arabirime ipucu yazabilmeniz ve bu yöntemler için otomatik tamamlama olsun.

İhtiyacınız olan şeye bağlı olarak, gerekli formları, muhtemelen bir render denetleyicisini ve benzerlerini tanımlamak gibi başka adımlar da olacaktır, ancak daha fazla bilgiye ihtiyacınız varsa bunlar muhtemelen ayrı sorular olmalıdır.

Notlar:

  • Yapılandırma varlıkları temel olarak benzerdir, ancak yapılandırma depolama denetleyicisini kullanmanız dışında ( https://drupal.org/node/2119905 bunu kolaylaştırır), tablo şemalarını tanımlamanız gerekmez (açıkça) yapılandırma şeması dosyası, bkz. sınıflandırma sözcük dağarcığı veya düğüm türleri için olanlara bakın.
  • İçerik varlıklarının temel alanları genel veya korunan özellikler olarak tanımlanmaz, bunun yerine değerler ve alanlar özelliklerinde otomatik olarak yönetilir. Bunlara get () / set () veya ilgili sihirli yöntemlerle erişin. ($ node-> title, $ node-> get ('title') değerine eşittir).
  • Belgelere ilişkin yardım çok hoş olurdu. Sahip olmak istediğim içerik / yapı için temel bir taslak oluşturdum, bu yüzden sadece yeni bir sayfa oluşturun ve başlayın. Örneğin, basitleştirilmiş eğitimlere sahip olmakla ilgileniyorum, yapılandırma varlıkları için, burada zaten bir tane var hazır olduğunda varlık belgelerine geçecek: https://drupal.org/node/1809494
  • Çekirdek oldukça fazla sayıda içerik varlığı uygulamasına sahiptir, eğer çalışma örneklerini görmek istiyorsanız: Düğüm, Kullanıcı, Terim, Yorum, CustomBlock, ... adım 1'de bağlantılı makalenin açıkladığı gibi, her zaman tarafından sağlanan varlık türlerini bulabilirsiniz Varlık ad alanında bir modül.
  • @fago bu hafta sonu DrupalCamp Viyana'daki Entity API hakkında bir sunum yaptı , burada yazdıklarımın çoğunu ve daha fazlasını kapsıyor.

1
drupal kod üreteci oldukça kullanışlıdır - >> github.com/Chi-teck/drupal-code-generator
rémy

1
drupalconsole.com - ayrıca iyi bir yardımcı ( kaynak plakası oluşturmak, Drupal ile etkileşim ve hata ayıklamak için bir araç.)
milkovsky
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.