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:
Đã tạo một mô-đun tùy chỉnh mới và kích hoạt nó.
Đã 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ử $;
}
}
- Đã 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 $;
}
}
- 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',
],
];
}
- 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.