/** * 调用该元素所属群组的 add() 方法,以便在连贯接口中连续添加元素 * * @param enum $type * @param string $id * @param array $attrs * * @return QForm_Element_Abstract */ function add($type, $id, array $attrs = null) { if (!is_null($this->_group)) { return $this->_group->add($type, $id, $attrs); } throw new QForm_Exception(__('Current element not child.')); }
/** * 调用该元素所属群组的 add() 方法,以便在连贯接口中连续添加元素 * * @param enum $type * @param string $id * @param array $attrs * * @return QForm_Element */ function add($type, $id, array $attrs = null) { if (!is_null($this->_owner)) { return $this->_owner->add($type, $id, $attrs); } // LC_MSG: 当前元素 "%s" 不属于任何群组,因此无法完成 add() 操作. throw new QForm_Exception(__('当前元素 "%s" 不属于任何群组,因此无法完成 add() 操作.', $this->id)); }
/** * 从配置批量添加元素 * * 具体用法参考开发者手册关于表单的章节。 * * @param array $config * * @return QForm_Group */ function loadFromConfig(array $config) { foreach ($config as $id => $attrs) { if (!is_array($attrs)) { $attrs = array(); } if (!isset($this->_attrs['qform_group_id'])) { $this->_attrs['qform_group_id'] = ""; } if (isset($attrs['_elements'])) { if (!isset($attrs['qform_group_id'])) { $attrs['qform_group_id'] = $id; } $elements = (array) $attrs['_elements']; unset($attrs['_elements']); $group = new QForm_Group($id, $attrs, $this); if (!empty($elements)) { $group->loadFromConfig($elements); } $this->_elements[$id] = $group; } else { if (isset($attrs['_filters'])) { $filters = $attrs['_filters']; unset($attrs['_filters']); } else { $filters = null; } if (isset($attrs['_validations'])) { $validations = $attrs['_validations']; unset($attrs['_validations']); } else { $validations = null; } $attrs['qform_group_id'] = $this->_attrs['qform_group_id']; $element = new QForm_Element($id, $attrs, $this); if (!empty($filters)) { $element->addFilters($filters); } if (!empty($validations)) { $element->addValidations($validations); } if (isset($attrs['value'])) { $element->_unfiltered_value = $attrs['value']; } $this->_elements[$id] = $element; } } return $this; }
/** * 导入数据并验证,返回验证结果 * * 通过 validate() 方法,数据将被导入表单对象。 * 并在导入时进行过滤和验证,最后返回验证结果。 * * @code php * if ($form->validate($_POST)) * { * ... 验证通过 * } * @endcode * * 验证后的数据使用 values() 方法可以取得。 * 而未过滤的原始数据使用 unfilteredValues() 方法可以取得。 * * @param mixed $data 要导入的数据,可以是数组或者实现了 ArrayAccess 接口的对象,例如 QColl * @param array $failed 如果需要确定哪些数据没有验证通过,可以提供 $failed 参数。 * 验证结果后该参数将包含所有没有通过验证的表单元素的名字。 * * @return boolean 验证结果 */ function validate($data, &$failed = null) { $this->_before_validate($data); $is_valid = parent::validate($data, $failed); $this->_after_validate($data); return $is_valid; }
/** * 导入数据并验证,返回验证结果 * * 通过 validate() 方法,数据将被导入表单对象。 * 并在导入时进行过滤和验证,最后返回验证结果。 * * @code php * if ($form->validate($_POST)) * { * ... 验证通过 * } * @endcode * * 验证后的数据使用 values() 方法可以取得。 * 而未过滤的原始数据使用 unfilteredValues() 方法可以取得。 * * @param mixed $data 要导入的数据,可以是数组或者实现了 ArrayAccess 接口的对象,例如 QColl * @param array $failed 如果需要确定哪些数据没有验证通过,可以提供 $failed 参数。 * 验证结果后该参数将包含所有没有通过验证的表单元素的名字。 * * @return boolean 验证结果 */ function validate($data, &$failed = null) { $this->_before_validate($data); parent::validate($data, $failed); $this->_after_validate($data); $is_valid = $this->isValid(); if ($is_valid) { $this->_after_validate_successed(); } else { $this->_after_validate_failed(); } return $is_valid; }
function getValue() { $this->_before_validate(); $data = parent::getValue(); if ($this->_value_is_valid) { $this->_validate_messages = array(); } $this->_after_validate($data); if (!empty($this->_validate_messages)) { $this->_value_is_valid = false; throw new QValidator_ValidateFailedException($this->_validate_messages, $data); } else { $this->_validate_messages = null; } return $data; }