Điểm:0

Tạo biểu mẫu tùy chỉnh với trường biểu mẫu thực thể

lá cờ de

Tôi có một tính năng để di chuyển từ Drupal 7 sang Drupal 9. Tính năng này cho phép tôi tạo biểu mẫu tùy chỉnh gồm các trường tĩnh mà tôi xác định trong mã mô-đun của mình và các trường được truy xuất động từ một thực thể.

Nó hoạt động với "hàm ctools_field_invoke_field", dựa trên mô-đun Công cụ hỗn loạn. Hàm này tự nó dựa trên hàm gốc Drupal "field_default_form".

Chức năng này không được chuyển sang Drupal 9 theo nghiên cứu của tôi. Tôi có thể tìm thấy một tương đương? Tôi có nên phát triển chức năng này từ đầu không?

Mã trước đây của tôi:

// Nếu không có ngôn ngữ nào được cung cấp, hãy sử dụng ngôn ngữ trang web mặc định.
tùy chọn $ = mảng (
  'ngôn ngữ' => field_valid_language($langcode),
  'mặc định' => ĐÚNG,
);

// Nối vào biểu mẫu
ctools_include('trường');
$field_instance = field_info_instance($entity_type, $field_name, $bundle);
trả về (mảng) ctools_field_invoke_field($field_instance, 'form', $entity_type, $entity, $form, $form_state, $options);
Điểm:0
lá cờ ss

Tôi cũng không tìm thấy chức năng tương tự. Có vẻ như nó không tồn tại. Mặc dù vậy, đây là cách nó có thể đạt được ở dạng Drupal 8/9:

$entity = $this->entityTypeManager->getStorage('node')->create([
  'loại' => 'bài viết'
]);
$form_state->set('thực thể', $thực thể);


/** @var \Drupal\Core\Entity\Display\EntityFormDisplayInterface $form_display */
$form_display = $this->entityTypeManager->getStorage('entity_form_display')->load('node.article.custom_form_display');
$form_state->set('form_display', $form_display);

foreach ($form_display->getComponents() as $name => $component) {
  $widget = $form_display->getRenderer($name);
  nếu (!$widget) {
    tiếp tục;
  }

  $items = $entity->get($name);
  $items->filterEmptyItems();
  $form[$name] = $widget->form($items, $form, $form_state);
  $form[$name]['#access'] = $items->access('chỉnh sửa');
}

Mã này được lấy từ bài viết sau: https://www.webomelette.com/how-render-entity-field-widgets-inside-custom-form-drupal-8

Tôi không liên kết với nó, nhưng cá nhân, khuyên bạn nên đọc.

Đă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.