Julius'Lab

(Formidable) Ordenar entradas en una Vista por un Dynamic Field

El objetivo de usar este código es el de ordenar una Vista por un campo dinámico, pero este campo no puede ordenarse por medio del procedimiento normal. Entonces se debe crear un nuevo campo de texto (escondido, opcional), y agregar el código de abajo para que se copie automáticamente cada vez que se actualice el formulario. Así, se podrá ordenar por medio del campo escondido.

Fuente: https://formidableforms.com/knowledgebase/frm_validate_field_entry/#kb-copy-text-value-from-dynamic-field

This code will get the text value from a Dynamic field and copy it over to a second field. Replace 125 with the ID of the field to change and replace 120 with the ID of the Dynamic field to copy. If you want to copy the value from a Dynamic list field, change 20 to the ID of the Dynamic field that the Dynamic List field depends on. Replace 50 with the ID of the linked field that the Dynamic field loads entries from:

add_filter('frm_validate_field_entry', 'copy_my_dynamic_field', 10, 3);
function copy_my_dynamic_field( $errors, $posted_field, $posted_value ) {
  if ( $posted_field->id == 125 ) {
    $_POST['item_meta'][ $posted_field->id ] = FrmProEntriesController::get_field_value_shortcode( array( 'field_id' => 50, 'entry' => $_POST['item_meta'][120] ) );
  }
  return $errors;
}

Nota:
Las instrucciones están un poco confusas.

En el caso de querer copiar un valor dependiente del campo dinámico, es decir:

Formulario: Proyectos-Main
Estado (181) Dynamic Field, las entradas vienen
de Proyectos-Opc-Estados)
Estado-H (190) txt
Formulario: Proyectos-Opc-Estados
EstadosNumNivel
(172) num
EstadosNombreNivel
(173) txt
EstadosFAicon
(174) txt
EstadosIMG
(175) file load
EstadosNombre
(188) txt

En el Formulario Proyectos-Main, queremos que se copie el valor del campo EstadosNombre (188) (del Dynamic Field 181 en Proyectos-Main) al campo Estado-H (190) del mismo formulario. Entonces, el custom code de arriba queda así:

add_filter('frm_validate_field_entry', 'copy_my_dynamic_field', 10, 3);
function copy_my_dynamic_field( $errors, $posted_field, $posted_value ) {
  if ( $posted_field->id == 190 ) {
    $_POST['item_meta'][ $posted_field->id ] = FrmProEntriesController::get_field_value_shortcode( array( 'field_id' => 188, 'entry' => $_POST['item_meta'][181] ) );
  }
  return $errors;
}

Atención:
Deben ser campos de texto.

Search