Beschreibung

Die Aktion wpforms_process_validate_number-slider löst die Validierung für das Zahlen-Schieberegler-Feld aus, wenn das Formular gesendet wird, bevor ein Feldwert bereinigt wird.

Parametertypbeschreibung
$field_idstring|intFeld-ID als numerischer String.
$field_submitmixedEingereichter Feldwert (Rohdaten). Der Schiebereglerwert, wie er gesendet wurde, bevor das Feld ihn in einen Float umwandelt.
$form_dataArrayFormulardaten.

Weitere Informationen

Die Aktion wird innerhalb von WPForms_Process::process() ausgelöst. Nachdem die wpforms_process_before Hooks ausgeführt wurden, durchläuft die Methode jedes Feld in $form_data['fields'] und löst diese Aktion einmal pro Feld mit dem Rohwert aus $_POST aus. Die Datei befindet sich in includes/, daher wird der Hook sowohl in Lite als auch in Pro ausgelöst. Die Zahlen-Schieberegler-Feldklasse ist ebenfalls in beiden enthalten (includes/fields/class-number-slider.php).

Dieser Hook ist eine Instanz von do_action( "wpforms_process_validate_{$field_type}", $field_id, $field_submit, $form_data ). Der Hook-Name behält den Bindestrich vom Feldtyp bei. Derselbe Aufruf löst wpforms_process_validate_email für das E-Mail-Feld und wpforms_process_validate_name für das Name-Feld aus.

Die eigene Validierung des Feldes läuft über diese Aktion. WPForms_Field::__construct() fügt die validate()-Methode jedes Feldes mit Priorität 10 und drei Argumenten hinzu. Für den Zahlen-Schieberegler wandelt diese Methode den Wert in einen Float um, erzwingt die Einstellung Erforderlich (ein Wert von 0 zählt als ausgefüllt) und setzt die Nachricht wpforms_valid_number_label, wenn der Wert nicht numerisch ist.

Um eine Einreichung abzulehnen, schreiben Sie eine Nachricht in wpforms()->obj( 'process' )->errors[ $form_data['id'] ][ $field_id ]. Jeder Fehler, der während dieser Schleife gesetzt wird, stoppt die Verarbeitung, bevor der Eintrag gespeichert wird. Dies läuft nur bei der endgültigen Einreichung. Bei einem mehrseitigen Formular wird der Benutzer nicht daran gehindert, zwischen den Seiten zu wechseln.

Quelle

wpforms/includes/class-process.php

Beispiel

Lehnt eine Zahlen-Schieberegler-Einreichung ab, wenn der ausgewählte Wert 0 ist, sodass der Benutzer den Schieberegler bewegen muss, bevor das Formular durchläuft.

/**
 * 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 );

Referenzartikel