Utilizando el módulo Párrafos en Drupal 8, intento alterar el comportamiento de los campos de formulario contenidos en el campo de párrafo. Esto es para que pueda agregar comportamiento como devoluciones de llamada AJAX, ocultar mostrar otros campos usando estados, etc.
Puedo acceder al campo padre de párrafo usando esta función:
function hook_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
}
Pero, ¿cómo accedo a los campos dentro del párrafo?
Lo he intentado hook_field_widget_form_alter
pero fue en vano.
¿Cómo hago esto?
Nota: Todavía soy bastante nuevo en el desarrollo de Drupal.
8
paragraphs
bart_88
fuente
fuente
kint($form);
ykint($form_id);
eso debería darle la identificación para la alteración de la identificación del gancho y luego también debería darle las rutas de la matriz para lo que desea alterar.Respuestas:
Desde los párrafos ^ 1.3 puede usar hook_field_widget_WIDGET_TYPE_form_alter () ( vinculé la versión 8.2 porque hay un buen comentario sobre el uso del gancho).
Puedes ver el siguiente ejemplo en
modules/contrib/paragraphs/tests/modules/paragraphs_test/paragraphs_test.module
fuente
paragraphs
lugar deentity_reference_paragraphs
./* @var $paragraph \Drupal\paragraphs\Entity\Paragraph */ $paragraph = $form_state->get('paragraph'); $delta = $context['delta'];
Usarlo
hook_form_alter
podría alterar cualquier cosa en el formulario, incluso cosas que provienen de widgets. Puede ponerse un poco desordenado y tiende a romperse fácilmente cuando juegas con widgets.Si quieres alterar los widgets, lo que puedes hacer es crear tu propio widget. Los widgets son complementos (clase PHP), por lo que puede hacer que su propia subclase sea la que tiene y modificarla sobrescribiendo completamente las funciones o extendiendo las funciones.
Los widgets utilizan el sistema de anotación, por lo que debe definir el nombre, la identificación, etc. como comentarios sobre la clase La forma más fácil es simplemente copiar el widget original y luego darle un nuevo nombre e identificación, el resto debería ser como debe ser.
Recuerde borrar el caché para que Drupal encuentre el nuevo complemento.
fuente
Hay un parche para esto en la cola de emisión de Párrafos .
Agrega nuevos ganchos:
fuente
hook_field_widget_WIDGET_TYPE_form_alter()
.