Answers:
从第1.3节开始,您可以使用hook_field_widget_WIDGET_TYPE_form_alter()(我链接了8.2版本,因为有关使用该挂钩的评论很好)。
您可以在下面看到以下示例 modules/contrib/paragraphs/tests/modules/paragraphs_test/paragraphs_test.module
/**
* Implements hook_field_widget_WIDGET_TYPE_form_alter().
*/
function paragraphs_test_field_widget_entity_reference_paragraphs_form_alter(&$element, &$form_state, $context) {
if ($element['#paragraph_type'] == 'altered_paragraph') {
$element['subform']['field_text']['widget'][0]['#title'] = 'Altered title';
}
}
paragraphs
而不是entity_reference_paragraphs
。
/* @var $paragraph \Drupal\paragraphs\Entity\Paragraph */ $paragraph = $form_state->get('paragraph'); $delta = $context['delta'];
使用hook_form_alter
您可以更改表单中的任何内容,甚至包括来自小部件的内容。它很容易变得凌乱,当您与小部件弄乱时,它很容易折断。
如果您想更改小部件,可以做些自己的小部件。小部件是插件(PHP类),因此您可以使自己的子类成为您自己的子类,并通过完全覆盖函数或扩展函数来进行更改。
小部件使用注释系统,因此您需要在类上方定义名称,id等作为注释。最简单的方法是简单地复制原始窗口小部件并更改其名称和ID,其余部分应与需要一样。
记住要清除缓存以使Drupal找到新插件。
kint($form);
而kint($form_id);
这应该给你的钩ID更改ID,然后它也应该给你你想要改变什么阵列的路径。