Skip to content

Commit

Permalink
MINOR Removed overzealous value validation in ListboxField, should si…
Browse files Browse the repository at this point in the history
…lently ignore unknown values (lacking better referential integrity measures in the underlying model layer)
  • Loading branch information
chillu committed Jan 19, 2012
1 parent 82ef236 commit cb74dbc
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 19 deletions.
10 changes: 3 additions & 7 deletions forms/ListboxField.php
Expand Up @@ -162,18 +162,14 @@ function setValue($val) {
throw new InvalidArgumentException('No associative arrays allowed multiple=true');
}

if($diff = array_diff($parts, array_keys($this->source))) {
throw new InvalidArgumentException(sprintf(
'Invalid keys "%s" in value array for multiple=true',
Convert::raw2xml(implode(',', $diff))
));
}
// Doesn't check against unknown values in order to allow for less rigid data handling.
// They're silently ignored and overwritten the next time the field is saved.

parent::setValue($parts);
} else {
if(!in_array($val, array_keys($this->source))) {
throw new InvalidArgumentException(sprintf(
'Invalid value "%s" for multiple=true',
'Invalid value "%s" for multiple=false',
Convert::raw2xml($val)
));
}
Expand Down
12 changes: 0 additions & 12 deletions tests/forms/ListboxFieldTest.php
Expand Up @@ -90,18 +90,6 @@ function testSetValueFailsOnStringIfChoiceInvalidAndMultipleIsOff() {
$field->setValue('invalid');
}

/**
* @expectedException InvalidArgumentException
*/
function testSetValueFailsOnInvalidArrayKeyIfChoiceInvalidAndMultipleIsOn() {
$choices = array('a' => 'a value', 'b' => 'b value','c' => 'c value');
$field = new ListboxField('Choices', 'Choices', $choices);
$field->multiple = true;

$obj = new ListboxFieldTest_DataObject();
$field->setValue(array('a', 'invalid'));
}

function testFieldRenderingMultipleOff() {
$choices = array('a' => 'a value', 'b' => 'b value','c' => 'c value');
$field = new ListboxField('Choices', 'Choices', $choices);
Expand Down

0 comments on commit cb74dbc

Please sign in to comment.