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.
}
}