📄 quickform.php
字号:
$this->_elementIndex[$currentName] = $i + 1; } else { if (is_array($this->_duplicateIndex[$currentName])) { $dupIdx = array_search($i, $this->_duplicateIndex[$currentName]); $this->_duplicateIndex[$currentName][$dupIdx] = $i + 1; } } unset($this->_elements[$i]); } } // Put the element in place finally $this->_elements[$targetIdx] =& $element; if (!$duplicate) { $this->_elementIndex[$elementName] = $targetIdx; } else { $this->_duplicateIndex[$elementName][] = $targetIdx; } $element->onQuickFormEvent('updateValue', null, $this); if ($this->_freezeAll) { $element->freeze(); } // If not done, the elements will appear in reverse order ksort($this->_elements); return $element; } // }}} // {{{ addGroup() /** * Adds an element group * @param array $elements array of elements composing the group * @param string $name (optional)group name * @param string $groupLabel (optional)group label * @param string $separator (optional)string to separate elements * @param string $appendName (optional)specify whether the group name should be * used in the form element name ex: group[element] * @return object reference to added group of elements * @since 2.8 * @access public * @throws PEAR_Error */ function &addGroup($elements, $name=null, $groupLabel='', $separator=null, $appendName = true) { static $anonGroups = 1; if (0 == strlen($name)) { $name = 'qf_group_' . $anonGroups++; $appendName = false; } $group =& $this->addElement('group', $name, $groupLabel, $elements, $separator, $appendName); return $group; } // end func addGroup // }}} // {{{ &getElement() /** * Returns a reference to the element * * @param string $element Element name * @since 2.0 * @access public * @return object reference to element * @throws HTML_QuickForm_Error */ function &getElement($element) { if (isset($this->_elementIndex[$element])) { return $this->_elements[$this->_elementIndex[$element]]; } else { $error = PEAR::raiseError(null, QUICKFORM_NONEXIST_ELEMENT, null, E_USER_WARNING, "Element '$element' does not exist in HTML_QuickForm::getElement()", 'HTML_QuickForm_Error', true); return $error; } } // end func getElement // }}} // {{{ &getElementValue() /** * Returns the element's raw value * * This returns the value as submitted by the form (not filtered) * or set via setDefaults() or setConstants() * * @param string $element Element name * @since 2.0 * @access public * @return mixed element value * @throws HTML_QuickForm_Error */ function &getElementValue($element) { if (!isset($this->_elementIndex[$element])) { $error = PEAR::raiseError(null, QUICKFORM_NONEXIST_ELEMENT, null, E_USER_WARNING, "Element '$element' does not exist in HTML_QuickForm::getElementValue()", 'HTML_QuickForm_Error', true); return $error; } $value = $this->_elements[$this->_elementIndex[$element]]->getValue(); if (isset($this->_duplicateIndex[$element])) { foreach ($this->_duplicateIndex[$element] as $index) { if (null !== ($v = $this->_elements[$index]->getValue())) { if (is_array($value)) { $value[] = $v; } else { $value = (null === $value)? $v: array($value, $v); } } } } return $value; } // end func getElementValue // }}} // {{{ getSubmitValue() /** * Returns the elements value after submit and filter * * @param string Element name * @since 2.0 * @access public * @return mixed submitted element value or null if not set */ function getSubmitValue($elementName) { $value = null; if (isset($this->_submitValues[$elementName]) || isset($this->_submitFiles[$elementName])) { $value = isset($this->_submitValues[$elementName])? $this->_submitValues[$elementName]: array(); if (is_array($value) && isset($this->_submitFiles[$elementName])) { foreach ($this->_submitFiles[$elementName] as $k => $v) { $value = HTML_QuickForm::arrayMerge($value, $this->_reindexFiles($this->_submitFiles[$elementName][$k], $k)); } } } elseif ('file' == $this->getElementType($elementName)) { return $this->getElementValue($elementName); } elseif (false !== ($pos = strpos($elementName, '['))) { $base = str_replace( array('\\', '\''), array('\\\\', '\\\''), substr($elementName, 0, $pos) ); $idx = "['" . str_replace( array('\\', '\'', ']', '['), array('\\\\', '\\\'', '', "']['"), substr($elementName, $pos + 1, -1) ) . "']"; if (isset($this->_submitValues[$base])) { $value = eval("return (isset(\$this->_submitValues['{$base}']{$idx})) ? \$this->_submitValues['{$base}']{$idx} : null;"); } if ((is_array($value) || null === $value) && isset($this->_submitFiles[$base])) { $props = array('name', 'type', 'size', 'tmp_name', 'error'); $code = "if (!isset(\$this->_submitFiles['{$base}']['name']{$idx})) {\n" . " return null;\n" . "} else {\n" . " \$v = array();\n"; foreach ($props as $prop) { $code .= " \$v = HTML_QuickForm::arrayMerge(\$v, \$this->_reindexFiles(\$this->_submitFiles['{$base}']['{$prop}']{$idx}, '{$prop}'));\n"; } $fileValue = eval($code . " return \$v;\n}\n"); if (null !== $fileValue) { $value = null === $value? $fileValue: HTML_QuickForm::arrayMerge($value, $fileValue); } } } // This is only supposed to work for groups with appendName = false if (null === $value && 'group' == $this->getElementType($elementName)) { $group =& $this->getElement($elementName); $elements =& $group->getElements(); foreach (array_keys($elements) as $key) { $name = $group->getElementName($key); // prevent endless recursion in case of radios and such if ($name != $elementName) { if (null !== ($v = $this->getSubmitValue($name))) { $value[$name] = $v; } } } } return $value; } // end func getSubmitValue // }}} // {{{ _reindexFiles() /** * A helper function to change the indexes in $_FILES array * * @param mixed Some value from the $_FILES array * @param string The key from the $_FILES array that should be appended * @return array */ function _reindexFiles($value, $key) { if (!is_array($value)) { return array($key => $value); } else { $ret = array(); foreach ($value as $k => $v) { $ret[$k] = $this->_reindexFiles($v, $key); } return $ret; } } // }}} // {{{ getElementError() /** * Returns error corresponding to validated element * * @param string $element Name of form element to check * @since 1.0 * @access public * @return string error message corresponding to checked element */ function getElementError($element) { if (isset($this->_errors[$element])) { return $this->_errors[$element]; } } // end func getElementError // }}} // {{{ setElementError() /** * Set error message for a form element * * @param string $element Name of form element to set error for * @param string $message Error message, if empty then removes the current error message * @since 1.0 * @access public * @return void */ function setElementError($element, $message = null) { if (!empty($message)) { $this->_errors[$element] = $message; } else { unset($this->_errors[$element]); } } // end func setElementError // }}} // {{{ getElementType() /** * Returns the type of the given element * * @param string $element Name of form element * @since 1.1 * @access public * @return string Type of the element, false if the element is not found */ function getElementType($element) { if (isset($this->_elementIndex[$element])) { return $this->_elements[$this->_elementIndex[$element]]->getType(); } return false; } // end func getElementType // }}} // {{{ updateElementAttr() /** * Updates Attributes for one or more elements * * @param mixed $elements Array of element names/objects or string of elements to be updated * @param mixed $attrs Array or sting of html attributes * @since 2.10 * @access public * @return void */ function updateElementAttr($elements, $attrs) { if (is_string($elements)) { $elements = split('[ ]?,[ ]?', $elements); } foreach (array_keys($elements) as $key) { if (is_object($elements[$key]) && is_a($elements[$key], 'HTML_QuickForm_element')) { $elements[$key]->updateAttributes($attrs); } elseif (isset($this->_elementIndex[$elements[$key]])) { $this->_elements[$this->_elementIndex[$elements[$key]]]->updateAttributes($attrs); if (isset($this->_duplicateIndex[$elements[$key]])) { foreach ($this->_duplicateIndex[$elements[$key]] as $index) { $this->_elements[$index]->updateAttributes($attrs); } } } } } // end func updateElementAttr // }}} // {{{ removeElement() /** * Removes an element * * The method "unlinks" an element from the form, returning the reference * to the element object. If several elements named $elementName exist, * it removes the first one, leaving the others intact. * * @param string $elementName The element name * @param boolean $removeRules True if rules for this element are to be removed too * @access public * @since 2.0 * @return object HTML_QuickForm_element a reference to the removed element * @throws HTML_QuickForm_Error */ function &removeElement($elementName, $removeRules = true) { if (!isset($this->_elementIndex[$elementName])) { $error = PEAR::raiseError(null, QUICKFORM_NONEXIST_ELEMENT, null, E_USER_WARNING, "Element '$elementName' does not exist in HTML_QuickForm::removeElement()", 'HTML_QuickForm_Error', true); return $error; } $el =& $this->_elements[$this->_elementIndex[$elementName]]; unset($this->_elements[$this->_elementIndex[$elementName]]); if (empty($this->_duplicateIndex[$elementName])) { unset($this->_elementIndex[$elementName]); } else { $this->_elementIndex[$elementName] = array_shift($this->_duplicateIndex[$elementName]); } if ($removeRules) { unset($this->_rules[$elementName], $this->_errors[$elementName]); } return $el; } // end func removeElement // }}} // {{{ addRule() /** * Adds a validation rule for the given field
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -