diff --git a/e107_handlers/form_handler.php b/e107_handlers/form_handler.php index d001c43ba..59e4d4e42 100644 --- a/e107_handlers/form_handler.php +++ b/e107_handlers/form_handler.php @@ -3487,6 +3487,12 @@ var_dump($select_options);*/ $opts = $options; + + if($selected === array(0=>'')) // quick fix. @see github issue #4609 + { + $selected = 0; + } + foreach ((array) $option_array as $value => $label) { @@ -6740,7 +6746,7 @@ var_dump($select_options);*/ $eloptions['multiple'] = true; } unset($parms['__options']); - if(!empty($eloptions['multiple']) && !is_array($value)) + if(!empty($eloptions['multiple']) && !is_array($value) && !empty($value)) { $value = explode(',', $value); } diff --git a/e107_tests/tests/unit/e_formTest.php b/e107_tests/tests/unit/e_formTest.php index 6f858246a..68f707c00 100644 --- a/e107_tests/tests/unit/e_formTest.php +++ b/e107_tests/tests/unit/e_formTest.php @@ -790,11 +790,11 @@ class e_formTest extends \Codeception\Test\Unit ); - foreach($tests as $row) + foreach($tests as $index => $row) { $actual = $this->_frm->option_multi($row['options'],$row['value']); $actual = str_replace("\n", '', $actual); - $this->assertSame($row['expected'], $actual); + $this->assertSame($row['expected'], $actual, 'Test #'.$index.' failed'); } }