Валидатор Typo3 возвращает вызов функции-члену addError() при нулевом значении

У меня есть гибкая форма. По завершении редактирования вызов ajax передается контроллеру, я создаю экземпляр EmailAddressValidator(). Мой код приведен ниже.

$validate =  \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Validation\\Validator\\EmailAddressValidator');
$result = $validate->isValid('[email protected]');

Он ничего не возвращает, если электронное письмо имеет правильный формат. Но он возвращает

Вызов функции-члена addError()

если формат неверный.


person Aswathy S    schedule 07.07.2016    source источник


Ответы (1)


(обновлено)

Проблема в том, как вы вызываете валидатор. Вам нужно вызвать метод validate, а не isValid.

Итак, это должно работать:

$validate =  \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Validation\\Validator\\EmailAddressValidator');
$result = $validate->validate('[email protected]');

$result является экземпляром TYPO3\CMS\Extbase\Error\Result, вы можете использовать для него метод hasErrors, чтобы проверить, почта была действительна.

person Jost    schedule 07.07.2016
comment
TYPO3\\CMS\\Extbase\\Object\\ObjectManager не может запускаться с обратной косой чертой. Поэтому я удалил обратную косую черту и запустил код. Но существует та же проблема. - person Aswathy S; 08.07.2016
comment
Хорошо, вы правы... в данном случае проблема не в DI (что обычно/часто является проблемой при вызове члена на null), а в том, как вы вызываете валидатор... Я отредактирую ответ. - person Jost; 08.07.2016
comment
Мой новый код: $validate = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Validation\\Validator\\EmailAddressValidator'); $result = $validate-›isValid('xyzgmail.com'); $error = $result-›hasError(); Но возникает та же ошибка - person Aswathy S; 08.07.2016
comment
Вам нужно позвонить validate, а не isValid: $result = $validate->validate(...). validate вызывает isValid внутренне, но перед этим создает $result, который затем использует isValid. - person Jost; 08.07.2016
comment
Вызов неопределенного метода TYPO3\CMS\Extbase\Error\Result::hasError() - person Aswathy S; 08.07.2016
comment
Это hasErrors (исправил в ответе), во множественном числе - проверяйте ссылку в ответе, по ней тоже можно получить сообщения об ошибках. - person Jost; 08.07.2016
comment
Мой объект $result: TYPO3\CMS\Extbase\Error\Resultprototypeobject errors => массив (пустой) errorsExist => FALSE предупреждения => массив (пустой) warningsExist => ЛОЖНЫЕ уведомления => массив (пустой) уведомленияExist => FALSE propertyResults => массив (пустой) родитель => NULL - person Aswathy S; 08.07.2016
comment
Давайте продолжим обсуждение в чате. - person Aswathy S; 08.07.2016