/** * Test invoke & render */ public function testInvokeAndRender() { $checkboxes = new MultiCheckboxGroup('test_multicheckboxgroup', array('empty_option' => 'empty', 'options' => array('value 1' => 'label 1', 'label 2' => array('label' => 'label 2', 'value' => 'value 2', 'checked' => true), 'label 3' => array('label' => 'label 3', 'options' => array('value 3.1' => 'label 3.1', 'label 3.2' => array('label' => 'label 3.2', 'value' => 'value 3.2', 'disabled' => true)), 'data-foo' => 'baz')))); $translator = $this->getMock('Zend\\I18n\\Translator\\Translator'); $translator->expects($this->at(0))->method('translate')->with('empty', 'default')->will($this->returnValue('empty at default')); $translator->expects($this->at(1))->method('translate')->with('label 1', 'default')->will($this->returnValue('label 1 at default')); $translator->expects($this->at(2))->method('translate')->with('label 2', 'default')->will($this->returnValue('label 2 at default')); $translator->expects($this->at(3))->method('translate')->with('label 3', 'default')->will($this->returnValue('label 3 at default')); $translator->expects($this->at(4))->method('translate')->with('label 3.1', 'default')->will($this->returnValue('label 3.1 at default')); $translator->expects($this->at(5))->method('translate')->with('label 3.2', 'default')->will($this->returnValue('label 3.2 at default')); $helper = $this->helper; $helper->setTranslator($translator); $checkboxes->setAttribute('data-foo', 'bar')->setValue(array('value 1', 'value 2'))->setTranslatorTextDomain('default'); $rendered = $helper($checkboxes); $this->assertTag(array('tag' => 'input', 'attributes' => array('type' => 'hidden', 'name' => 'test_multicheckboxgroup', 'value' => ''), 'parent' => array('attributes' => array('data-foo' => 'bar'))), $rendered); $this->assertTag(array('tag' => 'label', 'content' => 'empty at default', 'parent' => array('attributes' => array('data-foo' => 'bar')), 'child' => array('tag' => 'input', 'attributes' => array('type' => 'checkbox', 'name' => 'test_multicheckboxgroup[]', 'value' => ''))), $rendered); $this->assertTag(array('tag' => 'label', 'content' => 'label 1 at default', 'parent' => array('attributes' => array('data-foo' => 'bar')), 'child' => array('tag' => 'input', 'attributes' => array('type' => 'checkbox', 'name' => 'test_multicheckboxgroup[]', 'value' => 'value 1', 'checked' => 'checked'))), $rendered); $this->assertTag(array('tag' => 'label', 'content' => 'label 2 at default', 'parent' => array('attributes' => array('data-foo' => 'bar')), 'child' => array('tag' => 'input', 'attributes' => array('type' => 'checkbox', 'name' => 'test_multicheckboxgroup[]', 'value' => 'value 2', 'checked' => 'checked'))), $rendered); $this->assertTag($fieldsetMatcher = array('tag' => 'fieldset', 'parent' => array('attributes' => array('data-foo' => 'bar')), 'child' => array('tag' => 'legend', 'content' => 'label 3 at default'), 'attributes' => array('data-foo' => 'baz')), $rendered); $this->assertTag(array('tag' => 'label', 'content' => 'label 3.1 at default', 'parent' => $fieldsetMatcher, 'child' => array('tag' => 'input', 'attributes' => array('type' => 'checkbox', 'name' => 'test_multicheckboxgroup[]', 'value' => 'value 3.1'))), $rendered); $this->assertTag(array('tag' => 'label', 'content' => 'label 3.2 at default', 'parent' => $fieldsetMatcher, 'child' => array('tag' => 'input', 'attributes' => array('type' => 'checkbox', 'name' => 'test_multicheckboxgroup[]', 'value' => 'value 3.2'))), $rendered); }
/** * Sets checkboxes order by selection * @param mixed $value */ public function setValue($value) { if (is_array($value)) { $defaultOptionsList = $this->getValueOptions(); $sortedOptionsList = array(); foreach ($value as $optionKey) { if (key_exists($optionKey, $defaultOptionsList)) { $sortedOptionsList[$optionKey] = $defaultOptionsList[$optionKey]; unset($defaultOptionsList[$optionKey]); } } $sortedOptionsList = array_merge($sortedOptionsList, $defaultOptionsList); $this->setValueOptions($sortedOptionsList); } parent::setValue($value); }