Deshabilitar / Eliminar campos de formulario

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

Añadir nuevo comentario

HTML Restringido

  • Etiquetas HTML permitidas: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Saltos automáticos de líneas y de párrafos.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.
CAPTCHA
Esta pregunta es para comprobar si usted es un visitante humano y prevenir envíos de spam automatizado.