Sirvelia

Como buscar un field en Gravity Forms de forma única con inputName

Cuando trabajas con Gravity Forms en un desarrollo a medida, echas en falta una forma de obtener un campo (field) de forma fácil, sin depender de IDs ni labels.

Para conseguirlo, usamos el campo inputName. Aunque hay algunas excepciones, como el field Oculto, el inputName nos sirve para detectar de forma única el field de un form, sin tener que depender de un ID que podría cambiar.

Para asignar un inputName en un campo de Gravity Forms, marcamos la opción Permitir al campo rellenarse dinámicamente, en la pestñana Avanzado. Luego, asignamos un nombre de variables para el campo, que luego usaremos para encontrarlo de forma inequívoca.

inputName en Gravity Forms
inputName en Gravity Forms

Con el campo de inputName, luego podemos hacer un bucle en el $form, para obtener, a partir de un $inputName dado, el $field correspondiente.

De esta forma, podemos trabajar en desarrollos que extiendan funcionalidades en formularios de Gravity Forms de forma más ordenada, en alguno de los múltiples Hooks que Gravity Forms nos ofrece.

function gw_get_field_by_input_name( $form, $inputName ) {
  foreach( $form['fields'] as $field ) {
    if( $field->inputName == $inputName ) {
      return $field;
    }
  }
  return false;
}

También podéis usar adminLabel, en los casos que inputName no esté disponible.

function gw_get_field_by_admin_name( $form, $adminLabel ) {
  foreach( $form['fields'] as $field ) {
    if( $field->adminLabel == $adminLabel ) {
      return $field;
    }
  }
  return false;
}