Điểm:1

Làm cách nào để tạo một thực thể tùy chỉnh có thể nhập trường?

lá cờ us

Điều này đã được hỏi ở đây trước đây; nhưng câu hỏi đã bị đóng và một vài câu trả lời không cung cấp đủ thông tin.

Tôi đang cố gắng sử dụng mô-đun đóng góp (sitewide_alert) cung cấp thực thể tùy chỉnh của riêng nó.Tôi đang cố gắng tìm ra cách vá mô-đun này để làm cho nó có thể sử dụng được (và cách thực hiện việc này nói chung).

Trong các bài đăng khác, tôi đã thấy các đề xuất để thêm follinwg vào chú thích ContentEntityType:

  • trường = TRUE;
  • bundle_entity_type = ??
  • field_ui_base_route -> đề xuất khác nhau nhưng đã tồn tại cho mô-đun này trỏ đến biểu mẫu cấu hình của mô-đun.

Nhưng không ai trong số họ dường như sửa chữa điều này.

chú thích đầy đủ cho thực thể là:

* @ContentEntityType(
 * id = "sitewide_alert",
 * nhãn = @Translation("Cảnh báo toàn trang"),
 * label_plural = @Translation("Cảnh báo trên toàn trang web"),
 * label_collection = @Translation("Cảnh báo trên toàn trang web"),
 * xử lý = {
 * "lưu trữ" = "Drupal\sitewide_alert\SitewideAlertStorage",
 * "view_builder" = "Drupal\Core\Entity\EntityViewBuilder",
 * "list_builder" = "Drupal\sitewide_alert\SitewideAlertListBuilder",
 * "views_data" = "Drupal\sitewide_alert\Entity\SitewideAlertViewsData",
 * "bản dịch" = "Drupal\sitewide_alert\SitewideAlertTranslationHandler",
 *
 * "hình thức" = {
 * "mặc định" = "Drupal\sitewide_alert\Form\SitewideAlertForm",
 * "thêm" = "Drupal\sitewide_alert\Form\SitewideAlertForm",
 * "chỉnh sửa" = "Drupal\sitewide_alert\Form\SitewideAlertForm",
 * "xóa" = "Drupal\sitewide_alert\Form\SitewideAlertDeleteForm",
 * },
 * "tuyến_nhà cung cấp" = {
 * "html" = "Drupal\sitewide_alert\SitewideAlertHtmlRouteProvider",
 * },
 * "truy cập" = "Drupal\sitewide_alert\SitewideAlertAccessControlHandler",
 * },
 * base_table = "sitewide_alert",
 * data_table = "sitewide_alert_field_data",
 * bản sửa đổi = "sitewide_alert_revision",
 * bản sửa đổi_data_table = "sitewide_alert_field_revision",
 * show_revision_ui = TRUE,
 * có thể dịch = TRUE,
 * admin_permission = "quản lý các thực thể cảnh báo trên toàn trang web",
 * entity_keys = {
 * "id" = "id",
 * "sửa đổi" = "vid",
 * "nhãn" = "tên",
 * "uuid" = "uuid",
 * "uid" = "user_id",
 * "langcode" = "langcode",
 * "đã xuất bản" = "trạng thái",
 * },
 * khóa sửa đổi_metadata_keys = {
 * "revision_user" = "revision_user",
 * "revision_created" = "revision_created",
 * "revision_log_message" = "revision_log",
 * },
 * liên kết = {
 * "chuẩn" = "/admin/content/sitewide_alert/{sitewide_alert}",
 * "add-form" = "/admin/content/sitewide_alert/add",
 * "biểu mẫu chỉnh sửa" = "/admin/content/sitewide_alert/{sitewide_alert}/chỉnh sửa",
 * "delete-form" = "/admin/content/sitewide_alert/{sitewide_alert}/delete",
 * "version-history" = "/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}/xóa",
 * "translation_revert" = "/admin/content/sitewide_alert/{sitewide_alert}/revisions/{sitewide_alert_revision}/revert/{langcode}",
 * "bộ sưu tập" = "/admin/content/sitewide_alert",
 * },
 * field_ui_base_route = "sitewide_alert.settings",
 * ràng buộc = {
 * "DateDateProvided" = {}
 * }
 * )
 */

Trong cách tiếp cận thử nghiệm/lỗi của mình, tôi đã nhận thấy rằng tôi đã tạo giao diện người dùng Quản lý trường/Hiển thị/vv cho từng thực thể mà tôi đã tạo trước đó. Vì vậy, tôi nghĩ rằng điều này có thể liên quan đến việc không có một gói được xác định? Trường hợp sử dụng của tôi không yêu cầu tạo các gói mới (tương tự như thực thể Người dùng).

Mặc dù các câu trả lời được đăng khác; tôi đoán là sửa đổi chú thích là không đủ để thêm chức năng này.

Điểm:1
lá cờ cn

Không có gì sai với chú thích loại thực thể. Sau khi bạn đã xóa mã này, cố tình vô hiệu hóa các tuyến giao diện người dùng trường

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

thực thể phải có thể thực hiện được tại quản trị viên/nội dung/sitewide_alert/cài đặt/trường.

Đây là một mô-đun rất mát mẻ.Sau khi chơi xung quanh một chút, tôi phát hiện ra rằng mô-đun có hai tuyến cài đặt, biểu mẫu giả được đề cập ở một vị trí kỳ lạ bên dưới nội dung và biểu mẫu cài đặt mô-đun chính thức trong cấu hình. Nếu bạn đính kèm giao diện người dùng trường vào biểu mẫu này, tôi nghĩ sẽ dễ tìm hơn:

field_ui_base_route = "sitewide_alert.sitewide_alert_config_form"
liquidcms avatar
lá cờ us
thật tuyệt vời. Tôi thậm chí còn chưa từng thấy tệp định tuyến đó cố ý chặn người dùng truy cập vào quản lý trường. Tôi đoán người bảo trì dự án giả sử biết mọi trường hợp sử dụng có thể cho mô-đun của họ. Và vâng, di chuyển trường ui dưới biểu mẫu cấu hình sẽ hợp lý hơn, tôi đoán vậy. Giống như thực thể Người dùng; mặc dù luôn luôn cá nhân mặc dù điều đó là sai khi ở đó và nên ở dưới Cấu trúc. Tôi cũng sẽ thêm các liên kết/tab còn thiếu và tạo một bản vá. Cảm ơn bạn đã giúp đỡ.
liquidcms avatar
lá cờ us
Tôi đoán điều này có nghĩa là câu trả lời chiếm ưu thế mà tôi đã thấy đã đăng chú thích đó: "fieldable = true" được yêu cầu - không bắt buộc (hiện tại tôi không có nó và mọi thứ đang hoạt động như mong đợi).
4uk4 avatar
lá cờ cn
Không, chú thích này không tồn tại trong D8/9.Để biết loại thực thể có thể nhập trường tối thiểu, hãy xem https://drupal.stackexchange.com/questions/283826/how-do-i-add-a-view-mode-to-a-simple-custom-entity

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.