Используя модуль Paragraphs в Drupal 8, я пытаюсь изменить поведение полей формы, содержащихся в поле абзаца. Это позволяет мне добавлять поведение, например, обратные вызовы AJAX, скрывать, показывать другие поля, используя состояния и т. Д.
Я могу получить доступ к родительскому полю абзаца, используя эту функцию:
function hook_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
}
Но как мне получить доступ к полям внутри абзаца?
Я пытался, hook_field_widget_form_alter
но безрезультатно.
Как мне это сделать?
Примечание: я все еще новичок в разработке Drupal.
8
paragraphs
bart_88
источник
источник
kint($form);
иkint($form_id);
это должно дать вам идентификатор для изменения идентификатора хука, а затем это также даст вам пути к массивам для того, что вы хотите изменить.Ответы:
Начиная с параграфов ^ 1.3 вы можете использовать hook_field_widget_WIDGET_TYPE_form_alter () (я связал версию 8.2, потому что есть хороший комментарий об использовании ловушки).
Вы можете увидеть следующий пример в
modules/contrib/paragraphs/tests/modules/paragraphs_test/paragraphs_test.module
источник
paragraphs
вместоentity_reference_paragraphs
./* @var $paragraph \Drupal\paragraphs\Entity\Paragraph */ $paragraph = $form_state->get('paragraph'); $delta = $context['delta'];
Используя
hook_form_alter
вы можете изменить что-либо в форме, даже вещи из виджетов. Это может легко стать немного грязным, и это имеет тенденцию легко сломаться, когда вы возитесь с виджетами.Если вы хотите изменить виджеты, что вы можете сделать, сделайте свой собственный виджет. Виджеты - это плагины (класс PHP), поэтому вы можете сделать свой собственный подкласс тем, который у вас есть, и изменять его, либо полностью перезаписывая функции, либо расширяя их.
Виджеты используют систему аннотаций, поэтому вам нужно определить имя, идентификатор и т. Д. В качестве комментариев над классом. Самый простой способ - просто скопировать оригинальный виджет и изменить его, присвоив ему новое имя и идентификатор, остальные должны быть такими, какими они должны быть.
Не забудьте очистить кеш, чтобы Drupal нашел новый плагин.
источник
В очереди на выпуск Paragraphs есть патч для этого .
Добавляет новые хуки:
источник
hook_field_widget_WIDGET_TYPE_form_alter()
.