If you run any hostname through UriNormalize, at some point the normalize function in the Uri module is run. This module calls normalizePath function.
This function appends a / to the end of the URI.
Next, when you try to validate the URI with Hostname validator with 'useTldCheck' => true, in the options, it will always fail.

Steps to reproduce
Have the following in a fieldset
$this->add(
[
'name' => 'someUrl',
'required' => true,
'type' => Text::class,
'options' => [
'label' => 'Some URL',
],
'attributes' => [
'maxlength' => 100,
],
]
);
Have the following in an InputFilter:
$this->add(
[
'name' => 'someUrl',
'required' => true,
'filters' => [
['name' => StringTrim::class],
['name' => StripTags::class],
[
'name' => ToNull::class,
'options' => [
'type' => ToNull::TYPE_STRING,
],
],
[
'name' => UriNormalize::class,
'options' => [
'enforcedScheme' => 'https',
],
],
],
'validators' => [
[
'name' => StringLength::class,
'options' => [
'min' => 1,
'max' => 100,
],
],
[
'name' => Hostname::class,
'options' => [
'allow' => Hostname::ALLOW_DNS,
// Allow only DNS names
'useIdnCheck' => true,
// Check IDN domains - International Domain Names - supports international characters in DNS of country TLD, e.g. *.de (Germany) TLD
'useTldCheck' => true,
// Validates the existence of the TLD itself (the .com part of the domain)
],
],
[
'name' => Uri::class,
'options' => [
'allowRelative' => false,
],
],
],
]
);
I've got a few more issues reported that I'm solving, next to projects and a full-time job, I most likely will not have time to fix this. Would appreciate someone stepping in to fix this one. If not I might get around to it after other issues in zend-form and/or zend-inputfilter are finished.
If you run any hostname through UriNormalize, at some point the
normalizefunction in the Uri module is run. This module callsnormalizePathfunction.This function appends a
/to the end of the URI.Next, when you try to validate the URI with
Hostnamevalidator with'useTldCheck' => true,in the options, it will always fail.Steps to reproduce
Have the following in a fieldset
Have the following in an InputFilter:
I've got a few more issues reported that I'm solving, next to projects and a full-time job, I most likely will not have time to fix this. Would appreciate someone stepping in to fix this one. If not I might get around to it after other issues in zend-form and/or zend-inputfilter are finished.