forms – Hacer que todos los campos en un formulario no sean obligatorios

Pregunta:

Sé que, cuando quiero ejecutar la propiedad #require de un campo en hook_form_alter() , solo necesito establecer la propiedad #require de un campo específico en FALSE .

¿Cómo puedo eliminar la propiedad #required de todos los campos obligatorios? Quiero que los campos no sean obligatorios cuando el usuario tiene un rol específico.

¿Tienes alguna idea?

Respuesta:

Si está de acuerdo con los riesgos que esto podría representar para la integridad de su contenido, probablemente podría usar un script recursivo simple como el siguiente en una función de modificación de formulario:

function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'myform_name') {
    $form['#after_build'][] = '_MYMODULE_remove_required';
  }
}

function _MYMODULE_remove_required(&$element) {
  $element['#required'] = FALSE;

  foreach (element_children($element) as $key) {
    _MYMODULE_remove_required($element[$key]);
  }
}

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım