Hello.
Sorry for the delay. I was preparing a small example removing all the elements not related and simplifying it as much as possible.
There is no factories either, as the dependency injection doesn't look to be the problem.
This is the case.
We have a Collection element which is not required. It is composed by a Fieldset, which in turn is composed by a Select element and a Text element.
The Select in the fieldset has 4 possible values that should be validated by the InArryValidator included on it.
Just as the example is right now, on Windows, if the input data is something like this
$form = new TheForm(new TheInputFilter());
$form->setData(array(
TheForm::DESCRIPTIONS => array(
array(
TranslationFieldset::LANGUAGE => "en",
TranslationFieldset::MESSAGE => "The message"
),
TranslationFieldset::LANGUAGE => "es",
TranslationFieldset::MESSAGE => "El mensaje"
)
));
The form is valid, but when you call getData() the languages are missing (????)
$form->getData()
// This returns something like this
array(
'descriptions' => array(
array(
'message' => 'The message'
),
array(
'message' => 'El mensaje'
),
)
)
Otherwise, if I use TheOtherInputFilter instead of TheInputFilter, which creates a Zend\InputFilter\Input for the language, then it is present when calling getData() as expected, but in this case the problem is that any value is valid for the language, as if it didn't have an InArrayValidator.
Both examples work as expected in other Linux machines.
Let me know if someone is able to reproduce it. In the meantime I'm trying to reproduce it in another Windows machine, but I need to prepare the environment.
Thank you very much!