Score:1

จะสร้างเอนทิตีที่กำหนดเองได้อย่างไร?

ธง us

สิ่งนี้ถูกถามที่นี่มาก่อน แต่คำถามถูกปิดและการตอบกลับบางส่วนไม่ได้ให้ข้อมูลเพียงพอ

ฉันกำลังพยายามใช้โมดูลสนับสนุน (sitewide_alert) ซึ่งมีเอนทิตีที่กำหนดเองฉันกำลังพยายามหาวิธีแพตช์โมดูลนี้เพื่อให้สามารถกรอกข้อมูลได้ (และโดยทั่วไปจะทำอย่างไร)

ในโพสต์อื่น ๆ ฉันได้เห็นคำแนะนำให้เพิ่มสิ่งต่อไปนี้ในคำอธิบายประกอบ ContentEntityType:

  • ฟิลด์ได้ = TRUE;
  • bundle_entity_type = ??
  • field_ui_base_route -> คำแนะนำที่แตกต่างกัน แต่มีอยู่แล้วสำหรับโมดูลนี้ที่ชี้ไปที่แบบฟอร์มการกำหนดค่าของโมดูล

แต่ดูเหมือนจะไม่มีใครแก้ไขปัญหานี้ได้

คำอธิบายประกอบแบบเต็มสำหรับเอนทิตีคือ:

* @ContentEntityType(
 * id = "sitewide_alert",
 * label = @Translation("การแจ้งเตือนทั่วทั้งไซต์"),
 * label_plural = @Translation("การแจ้งเตือนทั่วทั้งไซต์"),
 * label_collection = @Translation("การแจ้งเตือนทั่วทั้งไซต์"),
 ตัวจัดการ * = {
 * "ที่เก็บข้อมูล" = "Drupal\sitewide_alert\SitewideAlertStorage",
 * "view_builder" = "Drupal\Core\Entity\EntityViewBuilder",
 * "list_builder" = "Drupal\sitewide_alert\SitewideAlertListBuilder",
 * "views_data" = "Drupal\sitewide_alert\Entity\SitewideAlertViewsData",
 * "การแปล" = "Drupal\sitewide_alert\SitewideAlertTranslationHandler",
 *
 * "แบบฟอร์ม" = {
 * "default" = "Drupal\sitewide_alert\Form\SitewideAlertForm",
 * "เพิ่ม" = "Drupal\sitewide_alert\Form\SitewideAlertForm",
 * "แก้ไข" = "Drupal\sitewide_alert\Form\SitewideAlertForm",
 * "ลบ" = "Drupal\sitewide_alert\Form\SitewideAlertDeleteForm",
 * },
 * "route_provider" = {
 * "html" = "Drupal\sitewide_alert\SitewideAlertHtmlRouteProvider",
 * },
 * "การเข้าถึง" = "Drupal\sitewide_alert\SitewideAlertAccessControlHandler",
 * },
 *base_table = "sitewide_alert",
 * data_table = "sitewide_alert_field_data",
 * revision_table = "sitewide_alert_revision",
 * revision_data_table = "sitewide_alert_field_revision",
 * show_revision_ui = จริง
 * แปลได้ = TRUE,
 * admin_permission = "จัดการเอนทิตีการแจ้งเตือนทั่วทั้งไซต์",
 * entity_keys = {
 * "รหัส" = "รหัส",
 * "การแก้ไข" = "วิดีโอ",
 * "ฉลาก" = "ชื่อ",
 * "uuid" = "uuid",
 * "uid" = "user_id",
 * "langcode" = "รหัสภาษา",
 * "เผยแพร่แล้ว" = "สถานะ",
 * },
 * revision_metadata_keys = {
 * "revision_user" = "revision_user",
 * "revision_created" = "revision_created",
 * "revision_log_message" = "revision_log",
 * },
 * ลิงก์ = {
 * "canonical" = "/admin/content/sitewide_alert/{sitewide_alert}",
 * "แบบฟอร์มเพิ่มเติม" = "/admin/content/sitewide_alert/add",
 * "แก้ไขแบบฟอร์ม" = "/admin/content/sitewide_alert/{sitewide_alert}/edit",
 * "แบบฟอร์มการลบ" = "/admin/content/sitewide_alert/{sitewide_alert}/delete",
 * "ประวัติเวอร์ชัน" = "/admin/content/sitewide_alert/{sitewide_alert}/revisions",
 * "revision" = "/admin/content/sitewide_alert/{sitewide_alert}/revisions/{sitewide_alert_revision}/view",
 * "revision_revert" = "/admin/content/sitewide_alert/{sitewide_alert}/revisions/{sitewide_alert_revision}/revert",
 * "revision_delete" = "/admin/content/sitewide_alert/{sitewide_alert}/revisions/{sitewide_alert_revision}/delete",
 * "translation_revert" = "/admin/content/sitewide_alert/{sitewide_alert}/revisions/{sitewide_alert_revision}/revert/{langcode}",
 * "collection" = "/admin/content/sitewide_alert",
 * },
 * field_ui_base_route = "sitewide_alert.settings",
 * ข้อ จำกัด = {
 * "ScheduledDateProvided" = {}
 * }
 * )
 */

ในการลองผิดลองถูก ฉันสังเกตเห็นว่าฉันได้สร้าง UI จัดการฟิลด์/ดิสเพลย์/อื่นๆ สำหรับแต่ละเอนทิตีที่ฉันสร้างไว้ก่อนหน้านี้ ดังนั้นฉันคิดว่านี่อาจเกี่ยวข้องกับการไม่ได้กำหนดบันเดิล? กรณีการใช้งานของฉันไม่จำเป็นต้องสร้างบันเดิลใหม่ (คล้ายกับเอนทิตีผู้ใช้)

แม้จะมีคำตอบอื่น ๆ ที่โพสต์; ฉันเดาว่าการแก้ไขคำอธิบายประกอบไม่เพียงพอสำหรับการเพิ่มฟังก์ชันนี้

Score:1
ธง cn

ไม่มีอะไรผิดปกติกับคำอธิบายประกอบประเภทเอนทิตี หลังจากที่คุณลบรหัสนี้โดยเจตนาปิดใช้งานเส้นทาง UI ของฟิลด์

https://git.drupalcode.org/project/sitewide_alert/-/blob/8.x-1.6/src/Routing/RouteSubscriber.php

เอนทิตีควรระบุข้อมูลได้ที่ admin/content/sitewide_alert/settings/fields.

นี่เป็นโมดูลที่ยอดเยี่ยมมากหลังจากลองเล่นไปสักเล็กน้อย ฉันพบว่าโมดูลมีเส้นทางการตั้งค่าสองเส้นทาง รูปแบบหุ่นจำลองที่กล่าวถึงในตำแหน่งแปลกๆ ใต้เนื้อหา และรูปแบบการตั้งค่าโมดูลอย่างเป็นทางการในการกำหนดค่า หากคุณแนบ UI ฟิลด์กับแบบฟอร์มนี้ ฉันคิดว่า:

field_ui_base_route = "sitewide_alert.sitewide_alert_config_form"
liquidcms avatar
us flag
เจ๋ง. ฉันไม่เห็นแม้แต่ไฟล์เส้นทางที่จงใจบล็อกผู้ใช้ไม่ให้เข้าถึงการจัดการฟิลด์ ฉันเดาว่าผู้ดูแลโครงการน่าจะรู้ทุกกรณีการใช้งานที่เป็นไปได้สำหรับโมดูลของพวกเขา และใช่ การย้ายฟิลด์ UI ภายใต้แบบฟอร์มการกำหนดค่านั้นสมเหตุสมผลกว่า ฉันเดาว่า เช่นเดียวกับเอนทิตีผู้ใช้ แม้ว่าโดยส่วนตัวเสมอว่าผิดที่จะอยู่ที่นั่นและควรอยู่ภายใต้โครงสร้าง ฉันจะเพิ่มลิงก์/แท็บที่ขาดหายไปด้วย และสร้างแพตช์ ขอบคุณสำหรับความช่วยเหลือของคุณ.
liquidcms avatar
us flag
ฉันเดาว่านี่หมายถึงคำตอบที่โดดเด่นที่ฉันเห็นโพสต์คำอธิบายประกอบนั้น: "fieldable = true" เป็นสิ่งที่จำเป็น - ไม่จำเป็น (ไม่ใช่เพราะตอนนี้ฉันไม่มีและทุกอย่างทำงานได้ตามที่คาดไว้)
4uk4 avatar
cn flag
ไม่ ไม่มีคำอธิบายประกอบนี้ใน D8/9สำหรับประเภทเอนทิตีที่กรอกข้อมูลได้น้อยที่สุด โปรดดู https://drupal.stackexchange.com/questions/283826/how-do-i-add-a-view-mode-to-a-simple-custom-entity

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา