/**
  * 调用该元素所属群组的 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.'));
 }
Beispiel #2
0
 /**
  * 调用该元素所属群组的 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));
 }
Beispiel #3
0
 /**
  * 从配置批量添加元素
  *
  * 具体用法参考开发者手册关于表单的章节。
  *
  * @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;
 }
Beispiel #4
0
 /**
  * 导入数据并验证,返回验证结果
  *
  * 通过 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;
 }
Beispiel #5
0
 /**
  * 导入数据并验证,返回验证结果
  *
  * 通过 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;
 }
Beispiel #6
0
 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;
 }