Regex method (Important)
-
Suppose I have created name field, in which i want to implement regex method for letters only, No numeric value should be passed on submission
It shoukd immediately show an error to the user.
-
I hope you’re well today!
You can use code like this for custom validation:
add_filter( 'forminator_custom_form_submit_errors', 'forminator_custom_validate_field', 99, 3 ); function forminator_custom_validate_field( $submit_errors, $form_id, $field_data_array ) { $form_ids = array( 3010 ); // IDs of forms to check; if more than one, separate by comma $fields = array( 'name-1' ); // list of fields to validate $error_msg = 'Invalid field'; // custom error message if ( in_array( $form_id, $form_ids ) ) { foreach( $field_data_array as $arr ) { if ( in_array( $arr['name'], $fields ) ) { // YOUR VALIDATION CODE GOES HERE // THE VALUE THAT YOU WANT TO CHECK is in $arr['value']; // example below will issue form error if field contains string TEXT if ( strpos( $arr['value'], 'TEXT' ) !== false ) { // issue error $submit_errors[][$arr['name']] = $error_msg; } } } } return $submit_errors; }
You would need to set your form ID, field IDs and error message and put your own validation code inside (see comments in code) and it will do the trick, showing general error above the form and your custom error directly below the validated field.
Kind regards,
AdamWe didn’t hear back from you for quite some time already so I hope that suggested solution worked for you.
I’m marking this topic as resolved then but if you have any follow-up questions, don’t hesitate to ask.
Best regards,
AdamOhh, Hi there, Sorry I missed the notifications, Thanks much for your help, But still it isn’t works the way I want, Actually i am having two fields, name and email in one form, and any user is passing anything in both the fields.
for e.g below –
Name – jhhggfhfh(or number 786876886687)Email – [email protected]
I need help to fix this….
Please help, below is my code, I have modified –
************************************************************add_filter( 'forminator_custom_form_submit_errors', 'forminator_custom_validate_field', 99, 3 );
function forminator_custom_validate_field( $submit_errors, $form_id, $field_data_array ) {
// Define the form ID to check
$form_ids = array( 13152 ); // Form ID(s) to check
// Define the fields to validate
$fields = array( 'name-1', 'email-1' ); // List of fields to validate
// Define the error message
$error_msg = 'Invalid input'; // Custom error message
// Check if the current form is in the list of form IDs
if ( in_array( $form_id, $form_ids ) ) {
foreach( $field_data_array as $arr ) {
if ( in_array( $arr['name'], $fields ) ) {
// YOUR VALIDATION CODE GOES HERE
// The value that you want to check is in $arr['value'];
// Example validation: Check if field 'name-1' contains the string 'TEXT'
if ($arr['name'] === 'name-1' && strpos( $arr['value'], 'TEXT' ) !== false) {
// Issue error if validation fails
$submit_errors[][$arr['name']] = $error_msg;
}
// Example validation: Check if email field 'email-1' is not a valid email address
if ($arr['name'] === 'email-1' && !filter_var($arr['value'], FILTER_VALIDATE_EMAIL)) {
// Issue error if validation fails
$submit_errors[][$arr['name']] = 'Invalid email address';
}
}
}
}
return $submit_errors;
}Hi @yashkumar4443,
There isn’t any way to validate based on what users manually type other than setting rules on what could be entered ie for example not allowing numbers for the Name field and only allowing valid domains for email ie only from Gmail, outlook etc
<?php
add_filter( 'forminator_custom_form_submit_errors', 'forminator_custom_validate_field', 99, 3 );
function forminator_custom_validate_field( $submit_errors, $form_id, $field_data_array ) {
$form_ids = array( 1324 ); // IDs of forms to check; if more than one, separate by comma
$fields_to_validate = array( 'name-1', 'email-1' ); // fields to validate
$error_msg_name = 'Please enter a name with letters only.';
$error_msg_email = 'Please use a valid email';
if ( in_array( $form_id, $form_ids ) ) {
foreach( $field_data_array as $arr ) {
if ( in_array( $arr['name'], $fields_to_validate ) ) {
// Validation for name field
if ( $arr['name'] == 'name-1' && !preg_match('/^[a-zA-Z\s]+$/', $arr['value']) ) {
$submit_errors[][$arr['name']] = $error_msg_name;
}
// Validation for email field
if ( $arr['name'] == 'email-1' && !preg_match('/@(gmail\.com|outlook\.com)$/', $arr['value']) ) {
$submit_errors[][$arr['name']] = $error_msg_email;
}
}
}
}
return $submit_errors;
}You can refer the above example snippet, which restricts Name field if number is entered and only allows email field with gmail or outlook email address.
You can use the above as a reference and tweak it according to your needs.
You can implement the above code using mu-plugins. Please check this link on how to implement the above code as a mu-plugins:
https://wpmudev.com/docs/using-wordpress/installing-wordpress-plugins/#installing-mu-pluginsKind Regards,
Nithin
- The topic ‘Regex method (Important)’ is closed to new replies.