Điểm:1

Mở rộng tiện ích chọn lõi

lá cờ tr

Xin vui lòng giúp đỡ với những điều sau đây:

Tôi cần một tiện ích mới (chỉ là một lựa chọn được thay đổi một chút) mà bất kỳ ai cũng có thể thiết lập từ giao diện người dùng. Tôi đã làm như sau:

  1. Đã tạo một mô-đun tùy chỉnh mới và kích hoạt nó.

  2. Đã tạo một tiện ích mới.

<?php

không gian tên Drupal\filtered_select\Plugin\Field\FieldWidget;

sử dụng Drupal\Core\Field\FieldItemListInterface;
sử dụng Drupal\Core\Field\Plugin\Field\FieldWidget\OptionsSelectWidget;
sử dụng Drupal\Core\Form\FormStateInterface;

/**
 * Triển khai plugin của tiện ích 'filtered_select'.
 *
 * @FieldWidget(
 * id = "filtered_select",
 * nhãn = @Translation("Đã Lọc"),
 * field_types = {
 * "thực thể_tham chiếu"
 * },
 * multiple_values ​​= FALSE
 * )
 */
class FilteredSelectWidget extends OptionsSelectWidget {

  /**
   * {@inheritdoc}
   */
  hàm công khai formElement(FieldItemListInterface $items, $delta, mảng $element, mảng &$form, FormStateInterface $form_state) {
    $element = parent::formElement($items, $delta, $element, $form, $form_state);
    // Sử dụng chức năng chọn cha,
    // chỉ chuyển đổi phần tử.
    $element['#type'] = 'fselect';

    trả lại phần tử $;
  }

}

  1. Đã tạo phần tử mới để tôi có thể chuyển đổi chủ đề. (không chắc chắn nếu điều này là cần thiết)
<?php

không gian tên Drupal\filtered_select\Element;

sử dụng Drupal\Core\Render\Element\Select;

/**
 * Cung cấp phần tử chọn đã lọc.
 * 
 * @FormElement("fselect")
 */
class FilteredSelect extends Select {

  /**
   * {@inheritdoc}
   */
  hàm công khai getInfo() {
    $info = cha mẹ::getInfo();

    // Chuyển đổi chủ đề.
    $info['#theme'] = 'fselect';

    trả lại thông tin $;
  }
}

  1. Nó không hoạt động theo cách khác nên tôi cũng có một hook_theme trong tệp mô-đun của mình như thế này:
/**
 * Triển khai hook_theme().
 */
chức năng filter_select_theme($current, $type, $theme, $path): mảng {
    trở lại [
        'chọn' => [
            'kết xuất phần tử' => 'phần tử',
            'mẫu' => 'chọn',
        ],
    ];
}
  
  1. Tôi vừa sao chép mẫu từ lõi vào mô-đun tùy chỉnh của mình và nó hoạt động theo nghĩa là nó in đúng mẫu, tôi vẫn chưa thay đổi mẫu này, trước tiên tôi chỉ muốn chức năng cốt lõi cũ hoạt động dưới một tên khác.

Số báo: Phần tử kết xuất mới của tôi dường như bị thiếu mảng tùy chọn và tôi không thể hiểu tại sao. Tôi đã thực hiện ghi đè thực sự cơ bản và tôi không thể hiểu tại sao nó không tạo mảng tùy chọn.

Twig Var Dumps:

--- ĐÂY LÀ LỰA CHỌN CỐT LÕI ---

mảng: 15 [â¼
  "phần tử" =>mảng:41 [â¶]
  "theme_hook_ original" => "chọn"
  "thuộc tính" =>Drupal\Core\Template\Attribute {#7543 â¶}
  "title_attributes" =>Drupal\Core\Template\Attribute {#7932 â¶}
  "content_attributes" =>Drupal\Core\Template\Attribute {#7896 â¶}
  "title_prefix" => []
  "title_suffix" => []
  "db_is_active" =>true
  "is_admin" => đúng
  "logged_in" => đúng
  "người dùng" =>Drupal\Core\Session\AccountProxy {#2354 â¶}
  "thư mục" => "lõi/chủ đề/bảy"
  "options" =>mảng:3 [â¼0 =>mảng:4 [â¶]
    1 =>mảng:3 [â¶]
    2 =>mảng:3 [â¶]
  ]
  "#cache" =>array:1 [â¶]
  "theme_hook_suggestions" => []
]

--- ĐÂY LÀ Lựa chọn đã lọc 'MỚI' của tôi ---

mảng:14 [â¼
  "phần tử" =>mảng:41 [â¶]
  "theme_hook_ original" => "fselect"
  "thuộc tính" =>Drupal\Core\Template\Attribute {#7543 â¶}
  "title_attributes" =>Drupal\Core\Template\Attribute {#8034 â¶}
  "content_attributes" =>Drupal\Core\Template\Attribute {#7708 â¶}
  "title_prefix" => []
  "title_suffix" => []
  "db_is_active" =>true
  "is_admin" => đúng
  "logged_in" => đúng
  "người dùng" =>Drupal\Core\Session\AccountProxy {#2354 â¶}
  "thư mục" => "lõi/chủ đề/bảy"
  "#cache" =>array:1 [â¶]
  "theme_hook_suggestions" => []
]

Như mọi người có thể thấy, tôi thiếu mảng 'tùy chọn' và tôi không thể hiểu tại sao. Xin tư vấn.

Điểm:1
lá cờ cn

Bạn đang thiếu template_pre process_select(). Bạn có thể sao chép mã vào hook tiền xử lý của riêng mình để chọn hoặc, đó có thể là một ý tưởng tốt hơn, mở rộng lựa chọn làm móc cơ sở và sử dụng dấu gạch dưới kép select__fselect cho tên mẫu mở rộng. Nhìn thấy Làm cách nào để xác định tệp html.html.twig tùy chỉnh?

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