diff --git a/cake/libs/view/helpers/form.php b/cake/libs/view/helpers/form.php index e71fff9be08..e1f3c442295 100644 --- a/cake/libs/view/helpers/form.php +++ b/cake/libs/view/helpers/form.php @@ -1721,7 +1721,7 @@ function __selectOptions($elements = array(), $selected = null, $parents = array } if ($name !== null) { - if ((!$selectedIsEmpty && $selected == $name) || ($selectedIsArray && in_array($name, $selected))) { + if ((!$selectedIsEmpty && (string)$selected == (string)$name) || ($selectedIsArray && in_array($name, $selected))) { if ($attributes['style'] === 'checkbox') { $htmlOptions['checked'] = true; } else { diff --git a/cake/tests/cases/libs/view/helpers/form.test.php b/cake/tests/cases/libs/view/helpers/form.test.php index 0a83d59c3d2..a0241322f8b 100644 --- a/cake/tests/cases/libs/view/helpers/form.test.php +++ b/cake/tests/cases/libs/view/helpers/form.test.php @@ -2687,6 +2687,23 @@ function testSelect() { '/select' ); $this->assertTags($result, $expected); + + $this->Form->data = array('Model' => array('contact_id' => 228)); + $result = $this->Form->select( + 'Model.contact_id', + array('228' => '228 value', '228-1' => '228-1 value', '228-2' => '228-2 value'), + null, array('escape' => false), 'pick something' + ); + + $expected = array( + 'select' => array('name' => 'data[Model][contact_id]', 'id' => 'ModelContactId'), + array('option' => array('value' => '')), 'pick something', '/option', + array('option' => array('value' => '228', 'selected' => 'selected')), '228 value', '/option', + array('option' => array('value' => '228-1')), '228-1 value', '/option', + array('option' => array('value' => '228-2')), '228-2 value', '/option', + '/select' + ); + $this->assertTags($result, $expected); } /** * Tests that FormHelper::select() allows null to be passed in the $attributes parameter