包 | system.web.form |
---|---|
继承 | class CFormInputElement » CFormElement » CComponent |
源自 | 1.1 |
版本 | $Id: CFormInputElement.php 3426 2011-10-25 00:01:09Z alexander.makarow $ |
源码 |
CFormInputElement 可以代表以下基于type属性的表单输入类型:
- text: 通过CHtml::activeTextField生成的普通文本输入框
- hidden: 通过CHtml::activeHiddenField生成的隐藏输入框
- password: 通过CHtml::activePasswordField生成的密码输入框
- textarea: 通过CHtml::activeTextArea生成的文本域
- file: 通过CHtml::activeFileField生成的文件输入框
- radio: 通过CHtml::activeRadioButton生成的单选按钮
- checkbox: 通过CHtml::activeCheckBox生成的复选框
- listbox: 通过CHtml::activeListBox生成的列表框
- dropdownlist: 通过CHtml::activeDropDownList生成的下拉列表
- checkboxlist: 通过CHtml::activeCheckBoxList生成的复选框列表
- radiolist: 通过CHtml::activeRadioButtonList生成的单选按钮列表
公共属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
attributes | array | 通过这个对象来表现HTML元素的属性列表(name=>value)。 | CFormElement |
coreTypes | array | 核心的输入类型(别名=>CHtml方法名) | CFormInputElement |
enableAjaxValidation | boolean | 是否允许这个输入元素基于AJAX验证。 注意,要使用基于AJAX验证,CForm::activeForm必须配置成'enableAjaxValidation'=>true。 这个属性允许打开或关闭单个输入栏的基于AJAX验证。 默认为true。 | CFormInputElement |
enableClientValidation | boolean | 是否允许这个输入元素客户端验证。 注意,要使用客户端验证,CForm::activeForm必须配置成'enableClientValidation'=>true. | CFormInputElement |
errorOptions | array | 渲染错误部分的选项。 这个属性会传递给CActiveForm::error方法,当作$htmlOptions来调用。 | CFormInputElement |
hint | string | 输入框的提示文本 | CFormInputElement |
items | array | 当元素是多选列表,下拉列表,复选框列表或单选按钮列表时的选项。 生成这些属性值的详细情况请查看CHtml::listData。 | CFormInputElement |
label | string | 输入元素的标签,如果没有手动设置这个标签, 该方法将调用CModel::getAttributeLabel来确定标签。 | CFormInputElement |
layout | string | 用于渲染标签,输入元素,提示和错误的布局。 它们对应到这些点位符:"{label}", "{input}", "{hint}" and "{error}". | CFormInputElement |
name | string | 输入框的名称 | CFormInputElement |
parent | mixed | 这个元素的真系父类。它可能是CForm对象,也可能是CBaseController对象。 (控制器或挂件)。 | CFormElement |
required | boolean | 得到的值表明这个输入元素是否为必须的。 | CFormInputElement |
type | string | 输入框的类型。可以是一个挂件的类名,可以是一个挂件类名的路径别名, 还可以是一个输入类型的别名(text, hidden, password, textarea, file, radio, checkbox, listbox, dropdownlist, checkboxlist, or radiolist). | CFormInputElement |
visible | boolean | 返回值说明这个元素是否可见并需要渲染。 | CFormElement |
公共方法
受保护方法
方法 | 描述 | 定义在 |
---|---|---|
evaluateVisible() | 评估元素的可见性。Evaluates the visibility of this element. | CFormInputElement |
属性详细
核心的输入类型(别名=>CHtml方法名)
是否允许这个输入元素基于AJAX验证。 注意,要使用基于AJAX验证,CForm::activeForm必须配置成'enableAjaxValidation'=>true。 这个属性允许打开或关闭单个输入栏的基于AJAX验证。 默认为true。
是否允许这个输入元素客户端验证。 注意,要使用客户端验证,CForm::activeForm必须配置成'enableClientValidation'=>true. 这个属性允许打开或关闭单个输入栏的客户端验证。 默认为true。
渲染错误部分的选项。 这个属性会传递给CActiveForm::error方法,当作$htmlOptions来调用。
输入框的提示文本
当元素是多选列表,下拉列表,复选框列表或单选按钮列表时的选项。 生成这些属性值的详细情况请查看CHtml::listData。
输入元素的标签,如果没有手动设置这个标签, 该方法将调用CModel::getAttributeLabel来确定标签。
用于渲染标签,输入元素,提示和错误的布局。 它们对应到这些点位符:"{label}", "{input}", "{hint}" and "{error}".
输入框的名称
得到的值表明这个输入元素是否为必须的。 如果这个属性没有明确设置, 它将会调用CModel::isAttributeRequired获得相关的模型和属性来决定。
输入框的类型。可以是一个挂件的类名,可以是一个挂件类名的路径别名, 还可以是一个输入类型的别名(text, hidden, password, textarea, file, radio, checkbox, listbox, dropdownlist, checkboxlist, or radiolist). 如果是一个挂件类,那它必须是继承于CInputWidget或(@link CJuiInputWidget).
方法详细
protected boolean evaluateVisible()
| ||
{return} | boolean | 这个元素是否可见 |
protected function evaluateVisible()
{
return $this->getParent()->getModel()->isAttributeSafe($this->name);
}
评估元素的可见性。Evaluates the visibility of this element. 这个方法将检查这个输入元素的属性 在当前的场景中是否是安全的。
public string getLabel()
| ||
{return} | string | 输入元素的标签,如果没有手动设置这个标签, 该方法将调用CModel::getAttributeLabel来确定标签。 |
public function getLabel()
{
if($this->_label!==null)
return $this->_label;
else
return $this->getParent()->getModel()->getAttributeLabel($this->name);
}
public boolean getRequired()
| ||
{return} | boolean | 这个输入元素是否为必须的。 |
public function getRequired()
{
if($this->_required!==null)
return $this->_required;
else
return $this->getParent()->getModel()->isAttributeRequired($this->name);
}
得到的值表明这个输入元素是否为必须的。 如果这个属性没有明确设置, 它将会调用CModel::isAttributeRequired获得相关的模型和属性来决定。
public string render()
| ||
{return} | string | 输入元素完整的渲染结果,包括标签,输入框,提示和错误。 |
public function render()
{
if($this->type==='hidden')
return $this->renderInput();
$output=array(
'{label}'=>$this->renderLabel(),
'{input}'=>$this->renderInput(),
'{hint}'=>$this->renderHint(),
'{error}'=>$this->getParent()->showErrorSummary ? '' : $this->renderError(),
);
return strtr($this->layout,$output);
}
渲染这个输入元素的所有内容。 默认实现只是返回renderLabel,renderInput,renderHint的结果。 当CForm::showErrorSummary为false时, 也会调用renderError在单个的输入元素后显示错误信息。
public string renderError()
| ||
{return} | string | 渲染结果 |
public function renderError()
{
$parent=$this->getParent();
return $parent->getActiveFormWidget()->error($parent->getModel(), $this->name, $this->errorOptions, $this->enableAjaxValidation, $this->enableClientValidation);
}
渲染这个输入元素的错误显示。 默认实现返回CHtml::error的结果。
public string renderHint()
| ||
{return} | string | 渲染结果 |
public function renderHint()
{
return $this->hint===null ? '' : '<div class="hint">'.$this->hint.'</div>';
}
渲染这个输入元素的提示文本。 默认实现返回一个关闭在一个HTML标签中的hint属性值。
public string renderInput()
| ||
{return} | string | 渲染结果 |
public function renderInput()
{
if(isset(self::$coreTypes[$this->type]))
{
$method=self::$coreTypes[$this->type];
if(strpos($method,'List')!==false)
return CHtml::$method($this->getParent()->getModel(), $this->name, $this->items, $this->attributes);
else
return CHtml::$method($this->getParent()->getModel(), $this->name, $this->attributes);
}
else
{
$attributes=$this->attributes;
$attributes['model']=$this->getParent()->getModel();
$attributes['attribute']=$this->name;
ob_start();
$this->getParent()->getOwner()->widget($this->type, $attributes);
return ob_get_clean();
}
}
渲染输入元素。 默认实现返回适当的CHtml方法或挂件。
public string renderLabel()
| ||
{return} | string | 渲染结果 |
public function renderLabel()
{
$options = array(
'label'=>$this->getLabel(),
'required'=>$this->getRequired()
);
if(!empty($this->attributes['id']))
{
$options['for'] = $this->attributes['id'];
}
return CHtml::activeLabel($this->getParent()->getModel(), $this->name, $options);
}
渲染这个输入元素的标签。Renders the label for this input. 默认实现返回activeLabelEx的结果。
public void setLabel(string $value)
| ||
$value | string | 输入元素的标签 |
public function setLabel($value)
{
$this->_label=$value;
}
public void setRequired(boolean $value)
| ||
$value | boolean | 这个输入元素是否为必须的。 |
public function setRequired($value)
{
$this->_required=$value;
}