/** * 渲染一个表单项目 * * @param QContext $context * @param QForm_Item_Abstract $item * @param array $error_messages * * @return string */ protected static function _renderItem(QContext $context, QForm_Item_Abstract $item, array $error_messages) { $out = ''; if (!$item->isGroup()) { $item = array($item); $prefix = ''; } else { $prefix = $item->id() . '_'; } foreach ($item as $element) { if ($element->type() != 'hidden') { $out .= "\n"; $id = $element->id(); $label = h($element->label); if ($label) { $out .= "<p>\n"; $out .= "<label for=\"{$id}\">{$label}:"; if ($element->description) { $descript = h($element->description); $out .= " <span class=\"notes\">({$descript})</span>"; } $out .= "</label>\n"; } $error_key = "{$prefix}{$id}"; if (isset($error_messages[$error_key])) { $out .= "<span class=\"error\">"; $msg = $error_messages[$error_key]; if (is_array($msg)) { $msg = implode(', ', $msg); } $out .= nl2br(htmlspecialchars($msg)); } else { $out .= "<span class=\"error hide\">"; } $out .= "<br /></span>\n"; $element->unsetProps('label, description'); $out .= $element->render($context, true); $out .= "\n"; if ($label) { $out .= "</p>\n"; } } else { $out .= "\n"; $out .= $element->render($context, true); $out .= "\n"; } } return $out; }
/** * 构造函数 * * @param string $id * @param string $type * @param array $props * @param boolean $bind_enabled */ function __construct($id, $type, array $props = null, $bind_enabled = true) { parent::__construct($id, $type, $props); $this->_bind_enabled = $bind_enabled; }
/** * 添加一个元件 * * @param QForm_Item_Abstract $element * * @return QForm_Item_Abstract */ function add(QForm_Item_Abstract $element) { $this->_elements[$element->id()] = $element; return $element; }