Deshabilitar / Eliminar campos de formulario

23/02/2016

A continuación se muestra un fragmento de código en Drupal 7 que implementa un callback con el fín de facilitar dos acciones según la acción que se quiera llevar a cabo (comentar la línea según la acción a realizar):

  • Deshabilitar campo: deshabilita el campo en el formulario dejándolo visible.
  • Eliminar campo: elimina el campo del formulario (incluso si es requerido).

En Drupal 8 ya no será necesario este tipo de funciones, ya que podremos editar la presentación de los formularios por interfaz.

/**
* Implements hook_form_FORM_ID_alter().
*/
function MODULE_form_FORM_ID_alter(&$form, &$form_state, $form_id) {

  // Hide none editable fields.
  $hide_fields = array(
   'field_stages',
   'field_project_visibility',
   'field_youth_partner_code',
   'field_about',
   'title',
   'field_region',
  );

  callback_hide_fields($hide_fields, $form);
}

/**
* Hide fields.
*
* @param $fields
*  An array with field names to hide.
* @param $form
*
* @ingroup callbacks
*/
function callback_hide_fields($fields, &$form) {
 foreach ($fields as $field) {
   $form[$field]['#access'] = FALSE; // Elimina el campo del formulario.
   $form[$field]['#disabled'] = TRUE; // Deshabilita el campo del formulario.
 }
}