zendframework / zend-inputfilter

InputFilter component from Zend Framework
BSD 3-Clause "New" or "Revised" License
64 stars 50 forks source link

Inputfilter getValues() returns the field which is not in input data #66

Open metanav opened 9 years ago

metanav commented 9 years ago
$specs =  array(
    'title' => array(
        'name'       => 'title',
        'filters' => array(
            array(
                'name' => 'Zend\Filter\StringToLower',
            ),
        ),
    ),
);

$inputFilterFactory = new \Zend\InputFilter\Factory();
$inputFilter = $inputFilterFactory->createInputFilter($specs);
$data = array(
    'title' => 'TEST',
);
$inputFilter->setData($data);
var_dump($inputFilter->getValues());

Expected Output:

array(1) {
  ["title"]=>
  string(3) "test"
}
$data = array(
    'xyz' => 'something',
);
$inputFilter->setData($data);
var_dump($inputFilter->getValues());

Unexpected (or it is intentional?) Output:

array(1) {
  ["title"]=> NULL
}
Maks3w commented 9 years ago

Related to https://github.com/zendframework/zf2/issues/7440

Maks3w commented 9 years ago

One possible option is to add an argument to getValues() for to return all inputs or only the inputs with data set.

Maks3w commented 9 years ago

Another option is add a new method for return only the fields with data (method name is more expressive rather than arguments values).

metanav commented 9 years ago

That would not stop input filter to do filtering of the input which is not set. The new method would just do one more filtering of unset data.

weierophinney commented 4 years ago

This repository has been closed and moved to laminas/laminas-inputfilter; a new issue has been opened at https://github.com/laminas/laminas-inputfilter/issues/9.