Наконец-то я добился того, что хотел, сделав следующее
моймодуль/моймодуль.модуль
используйте Drupal\Core\Form\FormStateInterface;
используйте Drupal\mymodule\Alter\FieldWidget\BlockImagesParagraph;
/**
* Реализует 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) {
если ($element['#paragraph_type'] == 'block_images') {
\Drupal::service('class_resolver')
->getInstanceFromDefinition(BlockImagesParagraph::class)
->alterFieldWidget($element, $form_state, $context);
}
}
мой модуль/SRC/изменить/FieldWidget
пространство имен Drupal\mymodule\Alter\FieldWidget;
используйте Drupal\Core\Form\FormStateInterface;
/**
* Изменить абзац block_images.
*/
конечный класс BlockImagesParagraph {
/**
* Изменить виджет поля.
*
* @param массив $элемент
* Элемент формы виджета поля.
* @param \Drupal\Core\Form\FormStateInterface $form_state
* Состояние формы.
* массив @param $контекст
* Ассоциативный массив, представляющий контекст.
*/
общедоступная функция alterFieldWidget (массив и $ элемент, FormStateInterface $ form_state, массив $ контекст) {
$widget = &$element['subform']['image']['widget'];
foreach ($widget as $key => &$value) {
если (! is_int ($ ключ)) {
Продолжить;
}
$значение['#процесс'][] = [
'Drupal\mymodule\Alter\FieldWidget\BlockImagesParagraph',
'процессИзображение Виджет',
];
}
}
/**
* Обработка виджета изображения.
*
* @param массив $элемент
* Элемент формы виджета поля.
* @param \Drupal\Core\Form\FormStateInterface $form_state
* Состояние формы.
* @param массив $form
* Ассоциативный массив, представляющий форму.
*/
общедоступная статическая функция processImageWidget (массив $ элемент, FormStateInterface $ form_state, массив $ форма) {
если (isset($элемент['название'])) {
$element['title']['#title'] = t('Caption');
}
вернуть $элемент;
}
}