\n") { return $this->formRadio($name, $value, $attribs, $options, $listsep); } public function formRadio($name, $value = null, $attribs = null, $options = null, $listsep = "
\n") { $info = $this->_getInfo($name, $value, $attribs, $options, $listsep); extract($info); // name, value, attribs, options, listsep, disable // retrieve attributes for labels (prefixed with 'label_' or 'label') $label_attribs = array(); foreach ($attribs as $key => $val) { $tmp = false; $keyLen = strlen($key); if ((6 < $keyLen) && (substr($key, 0, 6) == 'label_')) { $tmp = substr($key, 6); } elseif ((5 < $keyLen) && (substr($key, 0, 5) == 'label')) { $tmp = substr($key, 5); } if ($tmp) { // make sure first char is lowercase $tmp[0] = strtolower($tmp[0]); $label_attribs[$tmp] = $val; unset($attribs[$key]); } } $labelPlacement = 'append'; foreach ($label_attribs as $key => $val) { switch (strtolower($key)) { case 'placement': unset($label_attribs[$key]); $val = strtolower($val); if (in_array($val, array('prepend', 'append'))) { $labelPlacement = $val; } break; case 'processtree': unset($label_attribs['processtree']); break; } } // the radio button values and labels $options = (array) $options; // build the element $xhtml = ''; $list = array(); // should the name affect an array collection? $name = $this->view->escape($name); if ($this->_isArray && ('[]' != substr($name, -2))) { $name .= '[]'; } // ensure value is an array to allow matching multiple times $value = (array) $value; $readonly = ''; if (array_key_exists('readonly', $attribs) && $attribs['readonly']) { $readonly = ' onclick="return false;" '; $label_attribs['class'] = 'readonly'; } // XHTML or HTML end tag? $endTag = ' />'; if (($this->view instanceof Zend_View_Abstract) && !$this->view->doctype()->isXhtml()) { $endTag= '>'; } // add radio buttons to the list. // require_once 'Zend/Filter/Alnum.php'; $filter = new Zend_Filter_Alnum(); $list[] = '
'; // done! $xhtml .= implode('', $list); return $xhtml; } }