Hero

Como detectar si un Bundle/Entity usa fieldgroup en Drupal 7

Mayo 14, 2013

enzo
PHP
Programación
Drupal
Field API

Usando el módulo Field Group podemos crear formularios multistep para brindar una mejor experiencia al usuario, sin embargo si en nuestro sitio hacemos alguna personalización a los formularios usando el hook hook_form_alter es probable que deseemos comprobar si es un formulario multistep o no.

Aunque visualmente los MultiGroup y MultiPage se asocian a las Entidades estos elementos no son creados mediante el Field API por lo que la solución propuesta en Como obtener los fields de un Entity en Drupal 7 no funcionaria, pero si tiene dudas en la diferencia ente Bundle y Entity recomiendo su lectura.

Ahora bien para realizar la tarea de detectar si un bundle es multistep o lo podemos realizar con el siguiente código.

$groups = field_group_info_groups('entityform', $machine_name, 'form');
    if (count($groups)) {
      // Código para formulario multigroup
    }

En el ejemplo se llama a la función field_group_info_groups la cual retorna la definición de los grupos.

La función recibe tres parámetros Entity, Bundle y ModeView los cuales deben ser pasados en conjunto ya que sin el ModeView o sin el Bundle la función retorna vació. Si no se sabe en que Bundles esta siendo usando los multigroups se puede llamar sin parámetros y retorna todas las definiciones.

Espero que haya sido de ayuda.

Recibe consejos y oportunidades de trabajo 100% remotas y en dólares de weKnow Inc.