public function testRender() { $render = new CM_Frontend_Render(); $name = 'foo'; $data = array(32 => 'apples', 64 => 'oranges', 128 => 'bananas'); $field = new CM_FormField_Set(['name' => $name, 'values' => $data, 'labelsInValues' => true]); $values = array(64, 128); $field->setValue($values); $doc = $this->_renderFormField($field); $this->assertSame(count($data), $doc->find('label')->count()); $this->assertSame(count($data), $doc->find('input')->count()); foreach ($data as $value => $label) { $this->assertTrue($doc->has('li.' . $name . '-value-' . $value)); $this->assertTrue($doc->has('label[for]')); $this->assertTrue($doc->has('input[value="' . $value . '"]')); if (in_array($value, $values)) { $this->assertSame('checked', $doc->find('input[value="' . $value . '"]')->getAttribute('checked')); } } }
public function prepare(CM_Params $renderParams, CM_Frontend_Environment $environment, CM_Frontend_ViewResponse $viewResponse) { parent::prepare($renderParams, $environment, $viewResponse); $display = $renderParams->getString('display', self::DISPLAY_SELECT); if (!in_array($display, array(self::DISPLAY_SELECT, self::DISPLAY_RADIOS))) { throw new CM_Exception_InvalidParam('Display needs to be either `select` or `radios`'); } $viewResponse->addCssClass($display); $viewResponse->set('display', $display); $viewResponse->set('labelPrefix', $renderParams->has('labelPrefix') ? $renderParams->getString('labelPrefix') : null); $viewResponse->set('placeholder', $renderParams->getBoolean('placeholder', false)); }