public function validate(array $data, $method = null)
{
if ($method !== null && $method !== 'POST') {
// Not a post request, skip validation
return new ValidationResult([], [], [], $method);
}
$inputFilter = $this->factory->createInputFilter([]);
// Add all validators and filters to the InputFilter
$this->buildInputFilterFromForm($inputFilter);
$inputFilter->setData($data);
$messages = [];
// Do some validation
if (!$inputFilter->isValid()) {
foreach ($inputFilter->getInvalidInput() as $message) {
$messages[$message->getName()] = $message->getMessages();
}
}
// Get the submit button
$submitName = null;
foreach ($this->getSubmitStateNodeList() as $name) {
if (array_key_exists($name, $data)) {
$submitName = $name;
}
}
// Return validation result
return new ValidationResult($inputFilter->getRawValues(), $inputFilter->getValues(), $messages, $method, $submitName);
}