Skip Navigation

[Resolved] Validación en formulario

This support ticket is created 3 years, 11 months ago. There's a good chance that you are reading advice that it now obsolete.

This is the technical support forum for Toolset - a suite of plugins for developing WordPress sites without writing PHP.

Everyone can read this forum, but only Toolset clients can post in it. Toolset support works 6 days per week, 19 hours per day.

Sun Mon Tue Wed Thu Fri Sat
- 7:00 – 14:00 7:00 – 14:00 7:00 – 14:00 7:00 – 14:00 7:00 – 14:00 -
- 15:00 – 16:00 15:00 – 16:00 15:00 – 16:00 15:00 – 16:00 15:00 – 16:00 -

Supporter timezone: Europe/London (GMT+00:00)

Tagged: 

This topic contains 7 replies, has 2 voices.

Last updated by francisco-javierB-3 3 years, 11 months ago.

Assisted by: Nigel.

Author
Posts
#1963425
WhatsApp Image 2021-02-22 at 7.19.36 PM.jpeg
WhatsApp Image 2021-02-22 at 7.17.18 PM.jpeg
WhatsApp Image 2021-02-22 at 7.17.00 PM.jpeg

Buenas tarde, estoy tratando de hacer la validación de unos campos select en mi formularios. Estos campos select corresponden a taxonomías con un valor por default ( "0") , siguiendo la documentación resulta sencillo añadir dicha validación pero no me esta funcionando, he activado WP_DEBUG y TOOLSET_CODE_SNIPPETS_TEST_MODE pero no me arroja algún mensaje.

#1963989

Nigel
Supporter

Languages: English (English ) Spanish (Español )

Timezone: Europe/London (GMT+00:00)

¿Estás seguro que hablamos de unas taxonomías y no de campos particulares?

Normalmente no se puede especificar valores por defecto con taxonomías, y entonces no reconozco lo que describes si hablas de txonomías.

#1964295
WhatsApp Image 2021-02-23 at 9.03.49 AM.jpeg
WhatsApp Image 2021-02-23 at 8.58.40 AM.jpeg
Sin título.png

SI es una taxonomía invocada en el formulario en forma de select, y con JavaScript le asigno a cada uno un valor por defecto por así decirlo ( < ----- Seleccione ---- > ) . cred_form_validate para indicarle que esos controles entren en la validación de campos no entra en la función.

Te muestro un filtro que cree para llenar combos manualmente (fill_select) y ese funciona correctamente.

#1965739

para no complicarlo mas cred_form_validate no me esta funcionando. no entra a la función al enviar el formulario.

 
add_filter('cred_form_validate','my_validation',10,2);
function my_validation($error_fields, $form_data)
{
    //field data are field values and errors
    list($fields,$errors)=$error_fields;
    //uncomment this if you want to print the field values
    //print_r($fields);
    //validate if specific form
    if ($form_data['id']==466)
    {
        //Mis campos
    }
    //return result
     return array($fields,$errors);
}
#1970365

Nigel
Supporter

Languages: English (English ) Spanish (Español )

Timezone: Europe/London (GMT+00:00)

Disculpe, no pude trabajar en los últimos días, ahora he vuelto.

Hice algo parecido en mi sitio de prueba para confirmar que funciona.

Para una taxonomía "colour" usaba este JS para añadir una opción "--Select--":

( function( $ ) {
    $( document ).ready( function(){

        $('select[name="colour[]"]').prepend( `<option value="0" class="wpt-form-option form-option option">--Select--</option>`);

    });
})( jQuery );

Y el siguiente PHP para la validación:

add_filter( 'cred_form_validate', 'ts_form_validate', 10, 2 );
function ts_form_validate( $error_fields, $form_data ){

    if ( in_array( $form_data['id'], array( 229 ) ) ) // Edit ID(s) of forms
    {
        list($fields,$errors) = $error_fields;

        if ( $fields['colour']['value'][0] == 0 ) {
            $errors['colour'] = "Please select a colour";

            $error_fields = array( $fields, $errors );
        }

    }

    return $error_fields;
}

Nota bien que el valor de un select es un array, entonces lo recupero así : $fields['colour']['value'][0]

#1970895
WhatsApp Image 2021-03-01 at 9.15.28 AM.jpeg

Gracias por tu respuesta, intente hacerlo de esa manera mi problema es que no entra en el filtro / función para validar los campos antes de enviar el formulario, he puesto el código en el archivo function.php de mi tema e inclusive probando con otro tema que vienen por default con el WordPress, he creado también un código personalizado desde la herramienta de toolset, no se si me hace falta algo para que funcione.

te muestro el formulario, los campos que salen con un error de validación son los campos personalizados que en la configuración se puede especificar que sea requerido. no encuentro un error en log para saber que puede estar sucediendo que no me valida los campos con 'cred_form_validate'

#1970935

Nigel
Supporter

Languages: English (English ) Spanish (Español )

Timezone: Europe/London (GMT+00:00)

¿Me permites acceder al sitio para ver si puedo identificar el problema?

Voy a marcar tu respuesta siguiente como privada para que me facilita acceso. Es una buena idea crear un nuevo usuario administrador para mi que lo quitas después, y asegúrate que tienes una copia de seguridad corriente.

¿Dónde encuentro el formulario? ¿Y el código?

#1974175

My issue is resolved now. Thank you!