Использование Zend Framework 2. В моем приложении для редактирования данных в базе данных возможно скомпилировать html-форму или отправить HTTP-запрос (мой сервер реализован как веб-служба). В этом втором случае форма не отображается. Проблема. Если я вернул правила валидации в форму, когда сервер получал почтовый запрос, отправленный не из формы, а из общего почтового запроса HTTP (например, мобильного приложения) данные не проверялись / не фильтровались, потому что проверки привязывались в форма.
Возможно ли иметь уникальную централизованную систему валидатора? На мой взгляд, данные должны быть подтверждены до сохранения в db, а не в форме!
Идеи?
Вы можете найти аналогичный пример в документации Формы и действия
В Zend Framework 2 это делается с использованием входного фильтра, который может быть либо автономным, либо определенным в любом классе, который реализует интерфейс InputFilterAwareInterface .
Итак, в этом примере модель объекта реализует InputFilterAwareInterface и существуют методы setInputFilter и getInputFilter . Поэтому позже вы можете вызвать isValid ().
Я лично поместил все свои фильтры в src / ModuleName / Filter / (UserFilter.php). Где реализует InputFilterAwareInterface и определяет метод getInputFilter () со всеми грязными вещами.
Чем в контроллере, так и в любом другом классе, просто позвоните:
use ModuleName\Filter\UserFilter; ... $filter = new UserFilter(); $data = $this->params()->fromPost(); if(!$filter->getInputFilter()->setData($data)->isValid()){ $data = $filter->getInputFilter()->getValues(); $errors = $filter->getInputFilter()->getMessages(); // Throw an exception }