Expertos en Symfony y Drupal

Ocultar campos con form_alter en Drupal

Buenas drupaleros,

en la píldora drupaliana de hoy os voy a comentar como ocultar un campo de un formulario y asignarle un valor por defecto.

Imaginemos que tenemos varios roles y un select en un tipo de contenido, que nos ofrece la categoría en la que queremos publicar dicho contenido. Es lógico que si yo entro con un determinado rol, no pueda publicarlo en una sección distinta a la mía.

Para ello, lo mejor es modificar el formulario de entrada, para no ofrecer dicho select y además asignarle un valor por defecto. Pues es algo tan sencillo como


function MITEMA_form_alter(&$form, &$form_state, $form_id) {
  global $user;
  if ($form_id == "noticias_node_form") {
    if (isset($user->roles[5])) {
       $form['field_seccion']['und']['#default_value'][0] = 3;    
        hide($form['field_seccion']);
    }
}

En el ejemplo, cuando el tipo de contenido es noticia y el usuario que va a crearlo o editarlo tiene el rol 5, al campo sección le asignamos por defecto el valor 3 y además ocultamos dicho campo.

Ahora ya tenemos control total sobre el formulario. Sencillo ¿verdad?

Drupal y rock and roll

[x] Este sitio utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando estás aceptando su uso. Política de cookies.