示例#1
0
 /**
 * Accepts a renderer.  Overload select in case we'd like to see the 
 * checkboxes/radio buttons in a group when renderering with another
 * renderer.
 *
 * This function was copied from HTML_QuickForm_group::accept() and
 * modified for use with this class.
 *
 * @param  HTML_QuickForm_Renderer $renderer the QF renderer
 * @param  bool                    $require  whether a group is required
 * @param  string                  $error    an error message associated with
                                            a group
 * @see    HTML_QuickForm_group::accept()
 * @access public
 * @return void
 */
 function accept(&$renderer, $required = false, $error = null)
 {
     // if not asked to act like a group, then pass off to regular accept method
     if ($this->_type != 'group') {
         return parent::accept($renderer, $required, $error);
     }
     $this->_separator = null;
     $this->_appendName = null;
     $this->_required = array();
     // Beginning of code from HTML_QuickForm_group::accept()
     // ---8<---
     //$this->_createElementsIfNotExist();
     $renderer->startGroup($this, $required, $error);
     $name = $this->getName();
     // --->8---
     // use our method to get the elements instead
     $this->_elements = $this->getElements();
     // ---8<---
     foreach (array_keys($this->_elements) as $key) {
         $element =& $this->_elements[$key];
         if ($this->_appendName) {
             $elementName = $element->getName();
             if (isset($elementName)) {
                 $element->setName($name . '[' . (strlen($elementName) ? $elementName : $key) . ']');
             } else {
                 $element->setName($name);
             }
         }
         $required = !$element->isFrozen() && in_array($element->getName(), $this->_required);
         $element->accept($renderer, $required);
         // restore the element's name
         if ($this->_appendName) {
             $element->setName($elementName);
         }
     }
     $renderer->finishGroup($this);
     // --->8---
 }