Usando o módulo Parágrafos no Drupal 8, estou tentando alterar o comportamento dos campos do formulário contidos no campo Parágrafo. Isso é para que eu possa adicionar comportamentos como retornos de chamada AJAX, ocultar mostrar outros campos usando estados etc.
Eu posso acessar o campo pai do parágrafo usando esta função:
function hook_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
}
Mas como faço para acessar os campos dentro do parágrafo?
Eu tentei, hook_field_widget_form_alter
mas sem sucesso.
Como eu faço isso?
Nota: Ainda sou bastante novo no desenvolvimento do Drupal.
8
paragraphs
bart_88
fonte
fonte
kint($form);
ekint($form_id);
isso deve fornecer o ID para o hook id alter e, em seguida, também deve fornecer os caminhos do array para o que você deseja alterar.Respostas:
Desde os parágrafos ^ 1.3, você pode usar hook_field_widget_WIDGET_TYPE_form_alter () (vinculei a versão 8.2 porque há um bom comentário sobre o uso do hook).
Você pode ver o exemplo a seguir em
modules/contrib/paragraphs/tests/modules/paragraphs_test/paragraphs_test.module
fonte
paragraphs
vez deentity_reference_paragraphs
./* @var $paragraph \Drupal\paragraphs\Entity\Paragraph */ $paragraph = $form_state->get('paragraph'); $delta = $context['delta'];
O uso de
hook_form_alter
você pode alterar qualquer coisa no formulário, até coisas provenientes de widgets. Ele pode facilmente ficar um pouco confuso e tende a quebrar facilmente quando você mexe com widgets.Se você deseja alterar widgets, o que você pode fazer é criar seu próprio widget. Os widgets são plugins (classe PHP), para que você possa criar sua própria subclasse e alterar, substituindo completamente as funções ou estendendo as funções.
Os widgets usam o sistema de anotações, portanto, você precisa definir nome, ID etc. como comentários acima da classe. A maneira mais fácil é simplesmente copiar o widget original e alterar, dar-lhe um novo nome e ID, o resto deve ser o que precisa ser.
Lembre-se de limpar o cache para fazer o Drupal encontrar o novo plugin.
fonte
Existe um patch para isso na fila de problemas de parágrafos .
Adiciona novos ganchos:
fonte
hook_field_widget_WIDGET_TYPE_form_alter()
.