/** * Get the input filter, and validate the incoming data * * @TODO: when we have the new input filter, we should use named validation group and context * * @param string $inputFilterName * @param array $validationGroup * @param mixed $context * @return array * @throws UnprocessableEntityException */ public function __invoke($inputFilterName, array $validationGroup = [], $context = null) { /** @var \Zend\InputFilter\InputFilterInterface $inputFilter */ $inputFilter = $this->inputFilterPluginManager->get($inputFilterName); if (!empty($validationGroup)) { $inputFilter->setValidationGroup($validationGroup); } $data = array_merge(json_decode($this->controller->getRequest()->getContent(), true) ?: [], $this->controller->getRequest()->getPost()->toArray()); $inputFilter->setData($data); if ($inputFilter->isValid($context)) { return $inputFilter->getValues(); } throw new UnprocessableEntityException('Validation error', $inputFilter->getMessages()); }
public function testLoadingInvalidElementRaisesException() { $this->manager->setInvokableClass('test', get_class($this)); $this->setExpectedException('Zend\\InputFilter\\Exception\\RuntimeException'); $this->manager->get('test'); }