Automattic\WooCommerce\EmailEditor\Validator
Validator::validate_and_sanitize_one_of
Mirrors rest_find_one_matching_schema().
Метод класса: Validator{}
Хуков нет.
Возвращает
mixed|WP_Error.
Использование
// private - только в коде основоного (родительского) класса $result = $this->validate_and_sanitize_one_of( $value, $one_of_schema, $param_name );
- $value(разное) (обязательный)
- The value to validate.
- $one_of_schema(массив) (обязательный)
- The schema to validate against.
- $param_name(строка) (обязательный)
- The parameter name.
Код Validator::validate_and_sanitize_one_of() Validator::validate and sanitize one of WC 11.2.2
private function validate_and_sanitize_one_of( $value, array $one_of_schema, string $param_name ) {
$matching_schemas = array();
$errors = array();
$data = null;
foreach ( $one_of_schema['oneOf'] as $index => $schema ) {
$result = $this->validate_and_sanitize_value_from_schema( $value, $schema, $param_name );
if ( is_wp_error( $result ) ) {
$errors[] = array(
'error_object' => $result,
'schema' => $schema,
'index' => $index,
);
} else {
$data = $result;
$matching_schemas[ $index ] = $schema;
}
}
if ( ! $matching_schemas ) {
/* @phpstan-ignore-next-line Wrong annotation for parameter in WP. */
return rest_get_combining_operation_error( $value, $param_name, $errors );
}
if ( count( $matching_schemas ) > 1 ) {
// reuse WP method to generate detailed error.
$invalid_schema = array( 'type' => array() );
$one_of = array_replace( array_fill( 0, count( $one_of_schema['oneOf'] ), $invalid_schema ), $matching_schemas );
return rest_find_one_matching_schema( $value, array( 'oneOf' => $one_of ), $param_name );
}
return $data;
}