From 6ef0d8a683f96a072dd3ce610382cd0f4f5c17bd Mon Sep 17 00:00:00 2001 From: Wojtek Gancarczyk Date: Thu, 13 Aug 2015 12:17:53 +0000 Subject: [PATCH 1/3] assing values to select field correctly --- phalcon/forms/element/select.zep | 5 ++++- unit-tests/FormsTest.php | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/phalcon/forms/element/select.zep b/phalcon/forms/element/select.zep index 4440c522ee3..bdecaeaac98 100644 --- a/phalcon/forms/element/select.zep +++ b/phalcon/forms/element/select.zep @@ -74,7 +74,10 @@ class Select extends Element implements ElementInterface { */ public function addOption(var option) -> { - let this->_optionsValues[] = option; + var key, value; + for key, value in options { + let this->_optionsValues[key] = value; + } return this; } diff --git a/unit-tests/FormsTest.php b/unit-tests/FormsTest.php index ec43c5b512c..5feb887929c 100644 --- a/unit-tests/FormsTest.php +++ b/unit-tests/FormsTest.php @@ -517,4 +517,12 @@ public function testIssue2045() $this->assertEquals('', $element->render()); } + + public function testCorrectlyAddOptionToSelectElement() + { + $element = new Select('test-select'); + $element->addOption(array('key' => 'value')); + + $this->assertEquals('', preg_replace('/[[:cntrl:]]/', '', $element->render())); + } } From b0869c4240c79ad4a57bb29eaf29ddfc29bf27dc Mon Sep 17 00:00:00 2001 From: Wojtek Gancarczyk Date: Thu, 13 Aug 2015 12:42:22 +0000 Subject: [PATCH 2/3] fix parameter typo in the for loop --- phalcon/forms/element/select.zep | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phalcon/forms/element/select.zep b/phalcon/forms/element/select.zep index bdecaeaac98..931d0fd6d96 100644 --- a/phalcon/forms/element/select.zep +++ b/phalcon/forms/element/select.zep @@ -75,7 +75,7 @@ class Select extends Element implements ElementInterface { public function addOption(var option) -> { var key, value; - for key, value in options { + for key, value in option { let this->_optionsValues[key] = value; } return this; From 5b978d02a5ffabc5b16b5e3e6600ef881d7bfb3a Mon Sep 17 00:00:00 2001 From: Wojtek Gancarczyk Date: Thu, 13 Aug 2015 15:31:18 +0000 Subject: [PATCH 3/3] add support for strings passed to the addOption method --- phalcon/forms/element/select.zep | 10 +++++++--- unit-tests/FormsTest.php | 10 +++++++++- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/phalcon/forms/element/select.zep b/phalcon/forms/element/select.zep index 931d0fd6d96..d9886a5e511 100644 --- a/phalcon/forms/element/select.zep +++ b/phalcon/forms/element/select.zep @@ -74,9 +74,13 @@ class Select extends Element implements ElementInterface { */ public function addOption(var option) -> { - var key, value; - for key, value in option { - let this->_optionsValues[key] = value; + if is_array(option) { + var key, value; + for key, value in option { + let this->_optionsValues[key] = value; + } + } else { + let this->_optionsValues[] = option; } return this; } diff --git a/unit-tests/FormsTest.php b/unit-tests/FormsTest.php index 5feb887929c..8ae28907779 100644 --- a/unit-tests/FormsTest.php +++ b/unit-tests/FormsTest.php @@ -518,11 +518,19 @@ public function testIssue2045() $this->assertEquals('', $element->render()); } - public function testCorrectlyAddOptionToSelectElement() + public function testCorrectlyAddOptionToSelectElementIfParameterIsAnArray() { $element = new Select('test-select'); $element->addOption(array('key' => 'value')); $this->assertEquals('', preg_replace('/[[:cntrl:]]/', '', $element->render())); } + + public function testCorrectlyAddOptionToSelectElementIfParameterIsAString() + { + $element = new Select('test-select'); + $element->addOption('value'); + + $this->assertEquals('', preg_replace('/[[:cntrl:]]/', '', $element->render())); + } }