Descrição

A ação wpforms_process_validate_number-slider executa a validação no campo Number Slider quando o formulário é submetido, antes que qualquer valor do campo seja sanitizado.

parâmetrotipodescrição
$field_idstring|intID do campo como uma string numérica.
$field_submitmistoValor do campo submetido (dados brutos). O valor do slider conforme enviado, antes que o campo o converta para um float.
$form_datamatrizDados do formulário.

Mais Informações

A ação é executada dentro de WPForms_Process::process(). Após a execução dos hooks wpforms_process_before, o método percorre cada campo em $form_data['fields'] e executa esta ação uma vez por campo com o valor bruto de $_POST. O ficheiro reside em includes/, pelo que o hook é executado tanto no Lite como no Pro. A classe do campo Number Slider também é fornecida em ambos (includes/fields/class-number-slider.php).

Este hook é uma instância de do_action( "wpforms_process_validate_{$field_type}", $field_id, $field_submit, $form_data ). O nome do hook mantém o hífen do tipo de campo. A mesma chamada executa wpforms_process_validate_email para o campo Email e wpforms_process_validate_name para o campo Name.

A validação própria do campo é executada nesta mesma ação. WPForms_Field::__construct() adiciona o método validate() de cada campo na prioridade 10 com três argumentos. Para o Number Slider, esse método converte o valor para float, impõe a configuração Required (um valor de 0 conta como preenchido) e define a mensagem wpforms_valid_number_label quando o valor não é numérico.

Para rejeitar uma submissão, escreva uma mensagem em wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ]. Qualquer erro definido durante este loop para o processamento antes que a entrada seja guardada. Isto é executado apenas na submissão final. Num formulário de várias páginas, não impede o utilizador de se mover entre páginas.

Origem

wpforms/includes/class-process.php

Exemplo

Rejeita uma submissão do Number Slider quando o valor selecionado é 0, forçando o utilizador a mover o slider antes que o formulário prossiga.

/**
 * Require a Number Slider value other than 0.
 *
 * @link https://wpforms.com/developers/wpforms_process_validate_number-slider/
 *
 * @param string|int $field_id     Field ID as a numeric string.
 * @param mixed      $field_submit Submitted field value (raw data).
 * @param array      $form_data    Form data.
 */
function wpf_dev_validate_number_slider( $field_id, $field_submit, $form_data ) {

    // Only run on the form with ID 143 and the Number Slider field with ID 1. Remember to change both IDs to match your form.
    if ( absint( $form_data['id'] ) !== 143 || absint( $field_id ) !== 1 ) {
        return;
    }

    if ( (float) $field_submit === 0.0 ) {
        wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ] = esc_html__( 'Please select a number that is not 0.', 'wpforms' );
    }
}
add_action( 'wpforms_process_validate_number-slider', 'wpf_dev_validate_number_slider', 10, 3 );

Artigo de Referência