Cuối cùng tôi đã đạt được những gì tôi muốn làm như sau
mymodule/mymodule.module
sử dụng Drupal\Core\Form\FormStateInterface;
sử dụng Drupal\mymodule\Alter\FieldWidget\BlockImagesParagraph;
/**
* Triển khai hook_field_widget_single_element_WIDGET_TYPE_form_alter().
*/
function mymodule_field_widget_single_element_entity_reference_paragraphs_form_alter(&$element, FormStateInterface $form_state, $context) {
if ($element['#paragraph_type'] == 'block_images') {
\Drupal::service('class_resolver')
->getInstanceFromDefinition(BlockImagesParagraph::class)
->alterFieldWidget($element, $form_state, $context);
}
}
mymodule/src/Alter/FieldWidget
không gian tên Drupal\mymodule\Alter\FieldWidget;
sử dụng Drupal\Core\Form\FormStateInterface;
/**
* Thay đổi đoạn block_images.
*/
lớp cuối cùng BlockImagesParagraph {
/**
* Thay đổi tiện ích trường.
*
* @param mảng phần tử $
* Phần tử biểu mẫu tiện ích trường.
* @param \Drupal\Core\Form\FormStateInterface $form_state
* Trạng thái hình thức.
* Mảng @param $context
* Một mảng kết hợp đại diện cho ngữ cảnh.
*/
hàm công khai alterFieldWidget(mảng &$element, FormStateInterface $form_state, mảng $context) {
$widget = &$element['subform']['image']['widget'];
foreach ($widget as $key => &$value) {
nếu (!is_int($key)) {
tiếp tục;
}
$value['# process'][] = [
'Drupal\mymodule\Alter\FieldWidget\BlockImagesParagraph',
'ProcessImageWidget',
];
}
}
/**
* Xử lý tiện ích hình ảnh.
*
* @param mảng phần tử $
* Phần tử biểu mẫu tiện ích trường.
* @param \Drupal\Core\Form\FormStateInterface $form_state
* Trạng thái hình thức.
* @param mảng $form
* Một mảng kết hợp đại diện cho biểu mẫu.
*/
hàm tĩnh công khai processImageWidget(mảng $element, FormStateInterface $form_state, mảng $form) {
if (isset($element['title'])) {
$element['title']['#title'] = t('Chú thích');
}
trả lại phần tử $;
}
}