public function select($name, $choices, $options = array(), $html_attributes = array()) { $value = strval($this->get_model_data($name)); $option_tags = $this->add_default_select_options(FormTagHelper::options_for_select($choices, $value), $options, $value); return FormTagHelper::select_tag($this->get_field_name($name), $option_tags, $html_attributes); }
public function test_options_for_select() { $actual = FormTagHelper::options_for_select(array(1 => 'one', 2 => 'two')); $this->assertEquals("<option value=\"1\">one</option>\n<option value=\"2\">two</option>\n", $actual, 'should output correct option tags'); $actual = FormTagHelper::options_for_select(array(1 => 'one', 'others' => array(2 => 'two'))); $this->assertEquals("<option value=\"1\">one</option>\n<optgroup label=\"others\"><option value=\"2\">two</option>\n</optgroup>\n", $actual, 'should output correct optgroup tags'); $actual = FormTagHelper::options_for_select(array(1 => 'one', 2 => 'two'), 1); $this->assertEquals("<option value=\"1\" selected=\"selected\">one</option>\n<option value=\"2\">two</option>\n", $actual, 'should mark single selected value'); $actual = FormTagHelper::options_for_select(array(1 => 'one', 2 => 'two'), array(1, 2)); $this->assertEquals("<option value=\"1\" selected=\"selected\">one</option>\n<option value=\"2\" selected=\"selected\">two</option>\n", $actual, 'should mark multiple selected values'); }