CHtml

优质
小牛编辑
132浏览
2023-12-01
所有包 | 属性 | 方法
system.web.helpers
继承class CHtml
源自1.0
版本$Id: CHtml.php 3515 2011-12-28 12:29:24Z mdomba $
源码framework/web/helpers/CHtml.php
CHtml是一个静态类,提供了一个用于创建HTML视图的辅助方法。

公共属性

隐藏继承属性

属性类型描述定义在
afterRequiredLabelstring加在必填项标签后面的HTML代码。CHtml
beforeRequiredLabelstring加在必填项标签前面的HTML代码。CHtml
countinteger产生自动输入栏位名称的计数器。CHtml
errorCssstring高亮错误输出的CSS类。 如果有错误输入的话,表单输入控件将附加上这个CSS类。CHtml
errorMessageCssstring显示错误消息的CSS类。(请参阅 error).CHtml
errorSummaryCssstring显示错误摘要的CSS类。(请参阅 errorSummary).CHtml
liveEvents设置附加jQuery的事件处理程序的默认样式。CHtml
requiredCssstring必填项标签的CSS类。默认为'required'。CHtml

公共方法

隐藏继承方法

方法描述定义在
activeCheckBox()为模型属性生成一个复选框。CHtml
activeCheckBoxList()为一个模型属性生成一个复选框列表。CHtml
activeDropDownList()为一个模型属性生成一个下拉列表。CHtml
activeFileField()为一个模型属性生成一个文件输入框。CHtml
activeHiddenField()为模型属性生成一个隐藏域。CHtml
activeId()为模型属性生成一个输入栏的ID。CHtml
activeLabel()为模型属性生成一个label标签。CHtml
activeLabelEx()为模型属性生成一个label标签。CHtml
activeListBox()为一个模型属性生成一个列表框。CHtml
activeName()为一个模型属性生成输入栏名称。CHtml
activePasswordField()为一个模型属性生成一个密码输入框。CHtml
activeRadioButton()为模型属性生成一个单选按钮。CHtml
activeRadioButtonList()为一个模型属性生成一个单选按钮列表。CHtml
activeTextArea()为一个模型属性生成一个文本框。CHtml
activeTextField()为模型属性生成一个文本框。CHtml
ajax()生成启动AJAX请求的JavaScript。CHtml
ajaxButton()生成一个可以发起AJAX请求的按钮。CHtml
ajaxLink()生成一个可以发起AJAX请求的链接。CHtml
ajaxSubmitButton()生成一个可以用POST方法提交当前表单的按钮。CHtml
asset()生成公共资源的URL。CHtml
beginForm()生成一个表单的开始标签。CHtml
button()生成一个按钮。CHtml
cdata()将一个给定的字符串密封进一个CDATA标签中。CHtml
checkBox()生成一个复选框。CHtml
checkBoxList()生成一个复选框列表。CHtml
closeTag()生成一个HTML元素的结束标记CHtml
css()将给定的CSS内容密封到一个CSS标签中。CHtml
cssFile()特定的CSS文件的链接。CHtml
decode()把特殊的HTML实体解码为相对应的字符。CHtml
dropDownList()生成一个下拉列表。CHtml
encode()把特殊的字符编码为HTML实体。CHtml
encodeArray()把一个字符串数组中的特殊字符编码为HTML实体。CHtml
endForm()生成一个表单的结束标签。CHtml
error()显示一个模型属性的第一个有效的错误。CHtml
errorSummary()显示一个或多个模型的有效错误的摘要。CHtml
fileField()生成一个文件输入框。CHtml
form()生成一个表单的开始标签。CHtml
getIdByName()根据名称来生成一个有效的HTML ID。CHtml
hiddenField()生成一个隐藏的输入框CHtml
htmlButton()生成一个使用HTML按钮标签的按钮。CHtml
image()生成一个图片标签。CHtml
imageButton()生成一个图片提交按钮。CHtml
label()生成一个label标签CHtml
link()生成一个超链接。CHtml
linkButton()生成一个链接提交按钮。CHtml
linkTag()生成一个link标签,可以插入到HTML页面的头部部分。CHtml
listBox()生成一个列表框。CHtml
listData()为列表型HTML元素生成适当的数据。CHtml
listOptions()生成一个列表选项。CHtml
mailto()创建一个电子邮件链接。CHtml
metaTag()生成一个meta标签,可以插入到HTML页面的头部部分。CHtml
normalizeUrl()通过标准的输入来生成一个有效的URL。CHtml
openTag()生成一个HTML元素的开始标签。CHtml
pageStateField()生成一个用于存储页面持久状态的隐藏域。CHtml
passwordField()生成一个密码输入框。CHtml
radioButton()生成一个单选按钮。CHtml
radioButtonList()生成一个单选按钮列表。CHtml
refresh()注册一个“刷新”meta标签。CHtml
renderAttributes()渲染HTML标签属性。CHtml
resetButton()生成一个重置按钮。CHtml
resolveName()生成一个模型属性的输入名称CHtml
resolveNameID()生成一个模型属性的输入框名称和ID。CHtml
resolveValue()评估模型的属性值。CHtml
script()将给定的Javascript密封到一个script标签中。CHtml
scriptFile()包含一个Javascript文件。CHtml
statefulForm()生成一个有状态的表单标签。CHtml
submitButton()生成一个提交按钮。CHtml
tag()生成一个HTML元素。CHtml
textArea()生成一个文本框。CHtml
textField()生成一个文本输入框。CHtml
value()评估给定的模型中指定属性的值。CHtml

受保护方法

隐藏继承方法

方法描述定义在
activeInputField()为一个模型属性生成一个输入标签。CHtml
addErrorCss()添加errorCss到'class'属性。CHtml
clientChange()生成JavaScript与指定的客户端变化。CHtml
inputField()生成一个input标签。CHtml

属性详细

afterRequiredLabel 属性 public static string $afterRequiredLabel;

加在必填项标签后面的HTML代码。

参见

  • label
beforeRequiredLabel 属性 public static string $beforeRequiredLabel;

加在必填项标签前面的HTML代码。

参见

  • label
count 属性 public static integer $count;

产生自动输入栏位名称的计数器。

errorCss 属性 public static string $errorCss;

高亮错误输出的CSS类。 如果有错误输入的话,表单输入控件将附加上这个CSS类。

errorMessageCss 属性 public static string $errorMessageCss;

显示错误消息的CSS类。(请参阅 error).

errorSummaryCss 属性 public static string $errorSummaryCss;

显示错误摘要的CSS类。(请参阅 errorSummary).

liveEvents 属性 (可用自 v1.1.9) public static $liveEvents;

设置附加jQuery的事件处理程序的默认样式。

如果设置为true(默认),则使用live/delegated样式。 事件处理程序被附加到body后面, 来处理在稍后的时间添加到body的子元素上的事件。

如果设置为false,则使用直接的方式。 事件处理程序直接附加到DOM元素上面,元素必须是已经在页面上存在的。 在晚些时间注入到页面的元素不被处理。

你可以为某个特定的元素设置htmlOption中live属性来覆盖这个设置。 (请参阅 clientChange).

更多关于附加jQuery事件处理程序的信息,请参阅http://api.jquery.com/on/

参见

  • clientChange
requiredCss 属性 public static string $requiredCss;

必填项标签的CSS类。默认为'required'。

参见

  • label

方法详细

activeCheckBox() 方法
public static string activeCheckBox(CModel $model, string $attribute, array $htmlOptions=array ( ))
$modelCModel数据模型
$attributestring属性
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) 一个名为'uncheckValue'的选项是可用的, 当复选框没有被选中时可以返回这个选项的值。这个值默认为0。 在内部,一个隐藏域会被渲染,以便当复选框没有被选中时, 我们仍然能获取到未选中的值。 如果'uncheckValue'被设置为NULL,隐藏域将不会被渲染。
{return}string生成的复选框
源码: framework/web/helpers/CHtml.php#1342 (显示) publicstaticfunctionactiveCheckBox($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
if(!isset($htmlOptions['value']))
$htmlOptions['value']=1;
if(!isset($htmlOptions['checked'])&&self::resolveValue($model,$attribute)==$htmlOptions['value'])
$htmlOptions['checked']='checked';
self::clientChange('click',$htmlOptions);

if(array_key_exists('uncheckValue',$htmlOptions))
{
$uncheck=$htmlOptions['uncheckValue'];
unset($htmlOptions['uncheckValue']);
}
else
$uncheck='0';

$hiddenOptions=isset($htmlOptions['id'])?array('id'=>self::ID_PREFIX.$htmlOptions['id']):array('id'=>false);
$hidden=$uncheck!==null?self::hiddenField($htmlOptions['name'],$uncheck,$hiddenOptions):'';

return$hidden.self::activeInputField('checkbox',$model,$attribute,$htmlOptions);
}

为模型属性生成一个复选框。 属性被假定是true或false。 如果该属性有输入错误, 输入栏的CSS类会被附加上errorCss。

参见

  • clientChange
  • activeInputField
activeCheckBoxList() 方法
public static string activeCheckBoxList(CModel $model, string $attribute, array $data, array $htmlOptions=array ( ))
$modelCModel数据模型
$attributestring属性
$dataarray用于生成复选框列表的值-标签对。 注意,值会被自动HTML编码,而标签不会。
$htmlOptionsarray附加的HTML选项。 选项将会应用于每个复选框。下面指定的选项是被认可的:
  • template: 字符串,指定如何渲染每个复选框。 默认为"{input} {label}", 其中"{input}"将被生成的复选框标签取代, 而"{label}"会替换为相应的复选框标签的label。
  • separator: 字符串,分隔生成的复选框的字符串。
  • checkAll: 字符串,"check all"复选框指定的标签。 如果指定这个选项,一个'check all'复选框将会显示。 点击这个复选框将会将所有的复选框全选或全不选。
  • checkAllLast: 布尔值,指定是否在筛选框列表后面显示一个'check all'复选框。 如果没有设置这个选项(默认), 或者设置为false, 'check all'复选框将会显示在复选框列表的前面。
  • encode: 布尔型,指定是否对标签属性和值进行HTML编码,默认为true。
自1.1.7版起,一个名称为‘uncheckValue’的特殊选项可以被使用, 这个特殊选项的值在当单选按钮没有被选中时返回。 如果设置了这个特殊选项值,那么一个隐藏域会被渲染,以便当单选按钮没有被选中时,我们仍然可以获得一个未选中时的值。 如果‘uncheckValue’没有被设置或设置为NULL,隐藏域将不会被渲染。
{return}string生成的复选框列表
源码: framework/web/helpers/CHtml.php#1492 (显示) publicstaticfunctionactiveCheckBoxList($model,$attribute,$data,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
$selection=self::resolveValue($model,$attribute);
if($model->hasErrors($attribute))
self::addErrorCss($htmlOptions);
$name=$htmlOptions['name'];
unset($htmlOptions['name']);

if(array_key_exists('uncheckValue',$htmlOptions))
{
$uncheck=$htmlOptions['uncheckValue'];
unset($htmlOptions['uncheckValue']);
}
else
$uncheck='';

$hiddenOptions=isset($htmlOptions['id'])?array('id'=>self::ID_PREFIX.$htmlOptions['id']):array('id'=>false);
$hidden=$uncheck!==null?self::hiddenField($name,$uncheck,$hiddenOptions):'';

return$hidden.self::checkBoxList($name,$selection,$data,$htmlOptions);
}

为一个模型属性生成一个复选框列表。 模型的属性值用来作为选项。 如果该属性有输入错误, 输入栏的CSS类会被附加上errorCss。 注意一个复选框列表允许多选。就像listBox. 结果,相应的POST值是一个数组。 万一没有选择的话,相应的POST值是一个空字符串。

参见

  • checkBoxList
activeDropDownList() 方法
public static string activeDropDownList(CModel $model, string $attribute, array $data, array $htmlOptions=array ( ))
$modelCModel数据模型
$attributestring属性
$dataarray生成列表选项的数据(值=>显示) 你可以使用listData来生成这个数据。 请参阅listOptions来了解这个数据如何生成列表数据。 注意,这里的值个标签会自动被这个方法进行HTML编码。
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) 此外,下面的这属性也被支持:
  • encode: 布尔值,是否对值进行编码。默认为true。
  • prompt: 字符串,指定的作为第一个列表选项的提示文本。它的值为空。注意,提示文本不会被HTML编码。
  • empty: 字符串,指定空选项的文本,它的值为空。 'empty'选项也可以是一个值-标签对形式的数组。 在一开始每个对都会用于渲染一个列表的选项。注意,文本标签不会被HTML编码。
  • options: 数组,为每个OPTION标签额外指定的属性。 数组的键名必须是选项的值, 数组的键值是选项标签的额外的属性,名称-值对的形式。例如,
      array(      'value1'=>array('disabled'=>true, 'label'=>'value 1'),      'value2'=>array('label'=>'value 2'),  );
    
{return}string生成的下拉列表
源码: framework/web/helpers/CHtml.php#1399 (显示) publicstaticfunctionactiveDropDownList($model,$attribute,$data,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
$selection=self::resolveValue($model,$attribute);
$options="n".self::listOptions($selection,$data,$htmlOptions);
self::clientChange('change',$htmlOptions);
if($model->hasErrors($attribute))
self::addErrorCss($htmlOptions);
if(isset($htmlOptions['multiple']))
{
if(substr($htmlOptions['name'],-2)!=='[]')
$htmlOptions['name'].='[]';
}
returnself::tag('select',$htmlOptions,$options);
}

为一个模型属性生成一个下拉列表。 如果该属性有输入错误, 输入栏的CSS类会被附加上errorCss。

参见

  • clientChange
  • listData
activeFileField() 方法
public static string activeFileField(CModel $model, string $attribute, array $htmlOptions=array ( ))
$modelCModel数据模型
$attributestring属性
$htmlOptionsarray额外的HTML属性(请参阅tag).
{return}string生成的文件输入框
源码: framework/web/helpers/CHtml.php#1273 (显示) publicstaticfunctionactiveFileField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
//添加一个隐藏域,以便当一个模型只有一个文件输入框时,
//我们仍可以使用isset($_POST[$modelClass])来发现是否有输入提交
$hiddenOptions=isset($htmlOptions['id'])?array('id'=>self::ID_PREFIX.$htmlOptions['id']):array('id'=>false);
returnself::hiddenField($htmlOptions['name'],'',$hiddenOptions)
.self::activeInputField('file',$model,$attribute,$htmlOptions);
}

为一个模型属性生成一个文件输入框。 注意,你必须设置表单的‘enctype’属性为‘multipart/form-data’。 表单被提交后,上传的文件信息可以通过$_FILES[$name]来获得 (请参阅 PHP documentation).

参见

  • activeInputField
activeHiddenField() 方法
public static string activeHiddenField(CModel $model, string $attribute, array $htmlOptions=array ( ))
$modelCModel数据模型
$attributestring属性
$htmlOptionsarray额外的HTML属性
{return}string生成的隐藏域
源码: framework/web/helpers/CHtml.php#1216 (显示) publicstaticfunctionactiveHiddenField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
returnself::activeInputField('hidden',$model,$attribute,$htmlOptions);
}

为模型属性生成一个隐藏域。

参见

  • activeInputField
activeId() 方法
public static string activeId(CModel $model, string $attribute)
$modelCModel数据模型
$attributestring属性
{return}string生成的输入栏的ID
源码: framework/web/helpers/CHtml.php#1721 (显示) publicstaticfunctionactiveId($model,$attribute)
{
returnself::getIdByName(self::activeName($model,$attribute));
}

为模型属性生成一个输入栏的ID。

activeInputField() 方法
protected static string activeInputField(string $type, CModel $model, string $attribute, array $htmlOptions)
$typestring输入类型(例如'text', 'radio')
$modelCModel数据模型
$attributestring属性
$htmlOptionsarray输入标签的额外的HTML属性
{return}string生成的输入标签
源码: framework/web/helpers/CHtml.php#1751 (显示) protectedstaticfunctionactiveInputField($type,$model,$attribute,$htmlOptions)
{
$htmlOptions['type']=$type;
if($type==='text'||$type==='password')
{
if(!isset($htmlOptions['maxlength']))
{
foreach($model->getValidators($attribute)as$validator)
{
if($validatorinstanceofCStringValidator&&$validator->max!==null)
{
$htmlOptions['maxlength']=$validator->max;
break;
}
}
}
elseif($htmlOptions['maxlength']===false)
unset($htmlOptions['maxlength']);
}

if($type==='file')
unset($htmlOptions['value']);
elseif(!isset($htmlOptions['value']))
$htmlOptions['value']=self::resolveValue($model,$attribute);
if($model->hasErrors($attribute))
self::addErrorCss($htmlOptions);
returnself::tag('input',$htmlOptions);
}

为一个模型属性生成一个输入标签。 这个方法会依据给定的数据模型和属性来生成一个输入标签。 如果属性有输入错误, 输入栏的CSS类将被附加上errorCss。 这个可以高亮错误的输入。

activeLabel() 方法
public static string activeLabel(CModel $model, string $attribute, array $htmlOptions=array ( ))
$modelCModel数据模型
$attributestring属性
$htmlOptionsarray额外的HTML属性。下面指定选项是被认可的:
  • required: 如果设置了且为true, 那么标签将会设置为CSS类'required' (可由CHtml::$requiredCss定制), 可以用CHtml::beforeRequiredLabel和 CHtml::afterRequiredLabel来装饰。
  • label: 指定要显示的标签。如果没有设置, CModel::getAttributeLabel将被调用来获取要用于显示的标签。 如果标签被指定为false,那么将不会有标签被渲染。
{return}string生成的label标签
源码: framework/web/helpers/CHtml.php#1145 (显示) publicstaticfunctionactiveLabel($model,$attribute,$htmlOptions=array())
{
if(isset($htmlOptions['for']))
{
$for=$htmlOptions['for'];
unset($htmlOptions['for']);
}
else
$for=self::getIdByName(self::resolveName($model,$attribute));
if(isset($htmlOptions['label']))
{
if(($label=$htmlOptions['label'])===false)
return'';
unset($htmlOptions['label']);
}
else
$label=$model->getAttributeLabel($attribute);
if($model->hasErrors($attribute))
self::addErrorCss($htmlOptions);
returnself::label($label,$for,$htmlOptions);
}

为模型属性生成一个label标签。 标签的文本是模型属性的标签, 标签和input的属性有关(请参阅CModel::getAttributeLabel。 如果属性有输入错误,标签的CSS类会附加上errorCss.

activeLabelEx() 方法
public static string activeLabelEx(CModel $model, string $attribute, array $htmlOptions=array ( ))
$modelCModel数据模型
$attributestring属性
$htmlOptionsarray额外的HTML属性
{return}string生成的label标签
源码: framework/web/helpers/CHtml.php#1181 (显示) publicstaticfunctionactiveLabelEx($model,$attribute,$htmlOptions=array())
{
$realAttribute=$attribute;
self::resolveName($model,$attribute);//stripoffsquarebracketsifany
$htmlOptions['required']=$model->isAttributeRequired($attribute);
returnself::activeLabel($model,$realAttribute,$htmlOptions);
}

为模型属性生成一个label标签。 这是一个加强版的activeLabel。 当属性是必填的时候,它将渲染额外的CSS类个标记。 特别的,它调用CModel::isAttributeRequired来决定 属性是否为必填的。 如果是,它将添加一个CSS类CHtml::requiredCss到标签上, 用CHtml::beforeRequiredLabel和CHtml::afterRequiredLabel 来装饰标签。

activeListBox() 方法
public static string activeListBox(CModel $model, string $attribute, array $data, array $htmlOptions=array ( ))
$modelCModel数据模型
$attributestring属性
$dataarray生成列表选项的数据(值=>显示) 你可以使用listData来生成这个数据。 请参阅listOptions来了解这个数据如何生成列表数据。 注意,这里的值个标签会自动被这个方法进行HTML编码。
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) 此外,下面的这属性也被支持:
  • encode: 布尔值,是否对值进行编码。默认为true。
  • prompt: 字符串,指定的作为第一个列表选项的提示文本。它的值为空。注意,提示文本不会被HTML编码。
  • empty: 字符串,指定空选项的文本,它的值为空。 'empty'选项也可以是一个值-标签对形式的数组。 在一开始每个对都会用于渲染一个列表的选项。注意,文本标签不会被HTML编码。
  • options: 数组,为每个OPTION标签额外指定的属性。 数组的键名必须是选项的值, 数组的键值是选项标签的额外的属性,名称-值对的形式。例如,
      array(      'value1'=>array('disabled'=>true, 'label'=>'value 1'),      'value2'=>array('label'=>'value 2'),  );
    
{return}string生成的列表框
源码: framework/web/helpers/CHtml.php#1450 (显示) publicstaticfunctionactiveListBox($model,$attribute,$data,$htmlOptions=array())
{
if(!isset($htmlOptions['size']))
$htmlOptions['size']=4;
returnself::activeDropDownList($model,$attribute,$data,$htmlOptions);
}

为一个模型属性生成一个列表框。 模型的属性值用来作为选项。 如果该属性有输入错误, 输入栏的CSS类会被附加上errorCss。

参见

  • clientChange
  • listData
activeName() 方法
public static string activeName(CModel $model, string $attribute)
$modelCModel数据模型
$attributestring属性
{return}string生成的输入栏名称
源码: framework/web/helpers/CHtml.php#1733 (显示) publicstaticfunctionactiveName($model,$attribute)
{
$a=$attribute;//becausetheattributenamemaybechangedbyresolveName
returnself::resolveName($model,$a);
}

为一个模型属性生成输入栏名称。 不同于resolveName,这个方法不用修改属性名。

activePasswordField() 方法
public static string activePasswordField(CModel $model, string $attribute, array $htmlOptions=array ( ))
$modelCModel数据模型
$attributestring属性
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。)
{return}string生成的密码输入框
源码: framework/web/helpers/CHtml.php#1234 (显示) publicstaticfunctionactivePasswordField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
self::clientChange('change',$htmlOptions);
returnself::activeInputField('password',$model,$attribute,$htmlOptions);
}

为一个模型属性生成一个密码输入框。 如果该属性有输入错误, 输入栏的CSS类将会被附加上errorCss。

参见

  • clientChange
  • activeInputField
activeRadioButton() 方法
public static string activeRadioButton(CModel $model, string $attribute, array $htmlOptions=array ( ))
$modelCModel数据模型
$attributestring属性
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) 一个名为'uncheckValue'的选项是可用的, 当单选按钮没有被选中时可以返回这个选项的值。这个值默认为0。 在内部,一个隐藏域会被渲染,以便当单选按钮没有被选中时, 我们仍然能获取到未选中的值。 如果'uncheckValue'被设置为NULL,隐藏域将不会被渲染。
{return}string生成的单选按钮
源码: framework/web/helpers/CHtml.php#1300 (显示) publicstaticfunctionactiveRadioButton($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
if(!isset($htmlOptions['value']))
$htmlOptions['value']=1;
if(!isset($htmlOptions['checked'])&&self::resolveValue($model,$attribute)==$htmlOptions['value'])
$htmlOptions['checked']='checked';
self::clientChange('click',$htmlOptions);

if(array_key_exists('uncheckValue',$htmlOptions))
{
$uncheck=$htmlOptions['uncheckValue'];
unset($htmlOptions['uncheckValue']);
}
else
$uncheck='0';

$hiddenOptions=isset($htmlOptions['id'])?array('id'=>self::ID_PREFIX.$htmlOptions['id']):array('id'=>false);
$hidden=$uncheck!==null?self::hiddenField($htmlOptions['name'],$uncheck,$hiddenOptions):'';

//addahiddenfieldsothatiftheradiobuttonisnotselected,itstillsubmitsavalue
return$hidden.self::activeInputField('radio',$model,$attribute,$htmlOptions);
}

为模型属性生成一个单选按钮。 如果该属性有输入错误, 输入栏的CSS类会被附加上errorCss。

参见

  • clientChange
  • activeInputField
activeRadioButtonList() 方法
public static string activeRadioButtonList(CModel $model, string $attribute, array $data, array $htmlOptions=array ( ))
$modelCModel数据模型
$attributestring属性
$dataarray用于生成单选按钮列表的值-标签对。 注意,值会被自动HTML编码,而标签不会。
$htmlOptionsarray附加的HTML选项。 选项将会应用于每个单选按钮。下面指定的选项是被认可的:
  • template: 字符串,指定如何渲染每个复选框。 默认为"{input} {label}", 其中"{input}"将被生成的单选按钮标签取代, 而"{label}"会替换为相应的单选按钮标签的label。
  • separator: 字符串,分隔生成的单选按钮的字符串。默认为一个新行(
  • encode: 布尔型,指定是否对标签属性和值进行HTML编码,默认为true。
自1.1.7版起,一个名为'uncheckValue'的选项可用。 当没有单选按钮被选中时它返回一个特定的值。默认为''。 在内部,一个隐藏域会被渲染,当没有单选按钮被选中时,我们仍然可以获取一个POST值。 如果'uncheckValue'设置为NULL,隐藏域将不会被渲染。
{return}string生成的单选按钮列表
源码: framework/web/helpers/CHtml.php#1540 (显示) publicstaticfunctionactiveRadioButtonList($model,$attribute,$data,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
$selection=self::resolveValue($model,$attribute);
if($model->hasErrors($attribute))
self::addErrorCss($htmlOptions);
$name=$htmlOptions['name'];
unset($htmlOptions['name']);

if(array_key_exists('uncheckValue',$htmlOptions))
{
$uncheck=$htmlOptions['uncheckValue'];
unset($htmlOptions['uncheckValue']);
}
else
$uncheck='';

$hiddenOptions=isset($htmlOptions['id'])?array('id'=>self::ID_PREFIX.$htmlOptions['id']):array('id'=>false);
$hidden=$uncheck!==null?self::hiddenField($name,$uncheck,$hiddenOptions):'';

return$hidden.self::radioButtonList($name,$selection,$data,$htmlOptions);
}

为一个模型属性生成一个单选按钮列表。 模型的属性值用来作为选项。 如果该属性有输入错误, 输入栏的CSS类会被附加上errorCss。

参见

  • radioButtonList
activeTextArea() 方法
public static string activeTextArea(CModel $model, string $attribute, array $htmlOptions=array ( ))
$modelCModel数据模型
$attributestring属性
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。)
{return}string生成的文本框
源码: framework/web/helpers/CHtml.php#1252 (显示) publicstaticfunctionactiveTextArea($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
self::clientChange('change',$htmlOptions);
if($model->hasErrors($attribute))
self::addErrorCss($htmlOptions);
$text=self::resolveValue($model,$attribute);
returnself::tag('textarea',$htmlOptions,isset($htmlOptions['encode'])&&!$htmlOptions['encode']?$text:self::encode($text));
}

为一个模型属性生成一个文本框。 如果该属性有输入错误, 输入栏的CSS类会被附加上errorCss。

参见

  • clientChange
activeTextField() 方法
public static string activeTextField(CModel $model, string $attribute, array $htmlOptions=array ( ))
$modelCModel数据模型
$attributestring属性
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。)
{return}string生成的文本框
源码: framework/web/helpers/CHtml.php#1201 (显示) publicstaticfunctionactiveTextField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
self::clientChange('change',$htmlOptions);
returnself::activeInputField('text',$model,$attribute,$htmlOptions);
}

为模型属性生成一个文本框。 如果属性有输入错误, 输入框的CSS类将会附加上errorCss.

参见

  • clientChange
  • activeInputField
addErrorCss() 方法
protected static void addErrorCss(array &$htmlOptions)
$htmlOptionsarray要被修改的HTML选项
源码: framework/web/helpers/CHtml.php#2051 (显示) protectedstaticfunctionaddErrorCss(&$htmlOptions)
{
if(isset($htmlOptions['class']))
$htmlOptions['class'].=''.self::$errorCss;
else
$htmlOptions['class']=self::$errorCss;
}

添加errorCss到'class'属性。

ajax() 方法
public static string ajax(array $options)
$optionsarrayAJAX选项。jQuery的AJAX文档中指定了有效的选项。 为了方便起见,下面指定的选项被添加:
  • update: 字符串,指定的选择器,它的HTML内容将会被AJAX的请求结果所代替。
  • replace: 字符串,指定的选择器,会被AJAX的请求结果所代替。
注意,如果你指定了'success'选项,那么上面的设置会被忽略。
{return}string生成的JavaScript
源码: framework/web/helpers/CHtml.php#1025 (显示) publicstaticfunctionajax($options)
{
Yii::app()->getClientScript()->registerCoreScript('jquery');
if(!isset($options['url']))
$options['url']='js:location.href';
else
$options['url']=self::normalizeUrl($options['url']);
if(!isset($options['cache']))
$options['cache']=false;
if(!isset($options['data'])&&isset($options['type']))
$options['data']='js:jQuery(this).parents("form").serialize()';
foreach(array('beforeSend','complete','error','success')as$name)
{
if(isset($options[$name])&&strpos($options[$name],'js:')!==0)
$options[$name]='js:'.$options[$name];
}
if(isset($options['update']))
{
if(!isset($options['success']))
$options['success']='js:function(html){jQuery("'.$options['update'].'").html(html)}';
unset($options['update']);
}
if(isset($options['replace']))
{
if(!isset($options['success']))
$options['success']='js:function(html){jQuery("'.$options['replace'].'").replaceWith(html)}';
unset($options['replace']);
}
return'jQuery.ajax('.CJavaScript::encode($options).');';
}

生成启动AJAX请求的JavaScript。

参见

  • http://docs.jquery.com/Ajax/jQuery.ajax#options
ajaxButton() 方法
public static string ajaxButton(string $label, mixed $url, array $ajaxOptions=array ( ), array $htmlOptions=array ( ))
$labelstring按钮的标签
$urlmixedAJAX请求的URL。如果是空,那就假定为当前的URL。更多详细情况请参见normalizeUrl。
$ajaxOptionsarrayAJAX options (see ajax)
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。)
{return}string生成的按钮
源码: framework/web/helpers/CHtml.php#988 (显示) publicstaticfunctionajaxButton($label,$url,$ajaxOptions=array(),$htmlOptions=array())
{
$ajaxOptions['url']=$url;
$htmlOptions['ajax']=$ajaxOptions;
returnself::button($label,$htmlOptions);
}

生成一个可以发起AJAX请求的按钮。

ajaxLink() 方法
public static string ajaxLink(string $text, mixed $url, array $ajaxOptions=array ( ), array $htmlOptions=array ( ))
$textstring链接主体(不会被HTML编码)
$urlmixedAJAX请求的URL。如果是空,那就假定为当前的URL。更多详细信息请参见normalizeUrl。
$ajaxOptionsarrayAJAX选项 (请参阅ajax)
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。)
{return}string生成的链接
源码: framework/web/helpers/CHtml.php#969 (显示) publicstaticfunctionajaxLink($text,$url,$ajaxOptions=array(),$htmlOptions=array())
{
if(!isset($htmlOptions['href']))
$htmlOptions['href']='#';
$ajaxOptions['url']=$url;
$htmlOptions['ajax']=$ajaxOptions;
self::clientChange('click',$htmlOptions);
returnself::tag('a',$htmlOptions,$text);
}

生成一个可以发起AJAX请求的链接。

参见

  • normalizeUrl
  • ajax
ajaxSubmitButton() 方法
public static string ajaxSubmitButton(string $label, mixed $url, array $ajaxOptions=array ( ), array $htmlOptions=array ( ))
$labelstring按钮的标签
$urlmixedAJAX请求的URL。如果是空,那就假定为当前的URL。更多详细信息请参见normalizeUrl。
$ajaxOptionsarrayAJAX选项(请参阅ajax)
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。)
{return}string生成的按钮
源码: framework/web/helpers/CHtml.php#1004 (显示) publicstaticfunctionajaxSubmitButton($label,$url,$ajaxOptions=array(),$htmlOptions=array())
{
$ajaxOptions['type']='POST';
$htmlOptions['type']='submit';
returnself::ajaxButton($label,$url,$ajaxOptions,$htmlOptions);
}

生成一个可以用POST方法提交当前表单的按钮。

asset() 方法
public static string asset(string $path, boolean $hashByName=false)
$pathstring发布的资源路径
$hashByNameboolean公布的目录是否应该被命名为哈希文档名。 如果为false,该名称将是发布路径的哈希目录名。 默认为false。 如果想在不同扩展之间共享发布路径,那么就设置为true。
{return}string公共资源的URL
源码: framework/web/helpers/CHtml.php#1065 (显示) publicstaticfunctionasset($path,$hashByName=false)
{
returnYii::app()->getAssetManager()->publish($path,$hashByName);
}

生成公共资源的URL。

beginForm() 方法
public static string beginForm(mixed $action='', string $method='post', array $htmlOptions=array ( ))
$actionmixed表单的action链接(关于这个参数详见normalizeUrl。)
$methodstring表单方法(例如 post, get)
$htmlOptionsarray附加的HTML属性(请参阅tag)。
{return}string生成的表单标签。
源码: framework/web/helpers/CHtml.php#308 (显示) publicstaticfunctionbeginForm($action='',$method='post',$htmlOptions=array())
{
$htmlOptions['action']=$url=self::normalizeUrl($action);
$htmlOptions['method']=$method;
$form=self::tag('form',$htmlOptions,false,false);
$hiddens=array();
if(!strcasecmp($method,'get')&&($pos=strpos($url,'?'))!==false)
{
foreach(explode('&',substr($url,$pos+1))as$pair)
{
if(($pos=strpos($pair,'='))!==false)
$hiddens[]=self::hiddenField(urldecode(substr($pair,0,$pos)),urldecode(substr($pair,$pos+1)),array('id'=>false));
}
}
$request=Yii::app()->request;
if($request->enableCsrfValidation&&!strcasecmp($method,'post'))
$hiddens[]=self::hiddenField($request->csrfTokenName,$request->getCsrfToken(),array('id'=>false));
if($hiddens!==array())
$form.="n".self::tag('div',array('style'=>'display:none'),implode("n",$hiddens));
return$form;
}

生成一个表单的开始标签。 注意,仅生成表单的开始标签。 闭合的标签应该在表单末尾手动添加。

参见

  • endForm
button() 方法
public static string button(string $label='button', array $htmlOptions=array ( ))
$labelstring按钮的标签
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。)
{return}string生成的按钮标签
源码: framework/web/helpers/CHtml.php#424 (显示) publicstaticfunctionbutton($label='button',$htmlOptions=array())
{
if(!isset($htmlOptions['name']))
{
if(!array_key_exists('name',$htmlOptions))
$htmlOptions['name']=self::ID_PREFIX.self::$count++;
}
if(!isset($htmlOptions['type']))
$htmlOptions['type']='button';
if(!isset($htmlOptions['value']))
$htmlOptions['value']=$label;
self::clientChange('click',$htmlOptions);
returnself::tag('input',$htmlOptions);
}

生成一个按钮。

参见

  • clientChange
cdata() 方法
public static string cdata(string $text)
$textstring要被密封的字符串
{return}string含有密封内容的CDATA标签。
源码: framework/web/helpers/CHtml.php#176 (显示) publicstaticfunctioncdata($text)
{
return'<![CDATA['.$text.']]>';
}

将一个给定的字符串密封进一个CDATA标签中。

checkBox() 方法
public static string checkBox(string $name, boolean $checked=false, array $htmlOptions=array ( ))
$namestring复选框的名称
$checkedboolean复选框是否为被选中状态
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) 自1.1.2版起,一个名称为‘uncheckValue’的特殊选项可以被使用, 这个特殊选项的值在当复选框没被选中时返回。 如果设置了这个特殊选项值,那么一个隐藏域会被渲染,以便当复选框没有被选中时,我们仍然可以获得一个未选中时的值。 如果‘uncheckValue’没有被设置或设置为NULL,隐藏域将不会被渲染。
{return}string生成的复选框
源码: framework/web/helpers/CHtml.php#697 (显示) publicstaticfunctioncheckBox($name,$checked=false,$htmlOptions=array())
{
if($checked)
$htmlOptions['checked']='checked';
else
unset($htmlOptions['checked']);
$value=isset($htmlOptions['value'])?$htmlOptions['value']:1;
self::clientChange('click',$htmlOptions);

if(array_key_exists('uncheckValue',$htmlOptions))
{
$uncheck=$htmlOptions['uncheckValue'];
unset($htmlOptions['uncheckValue']);
}
else
$uncheck=null;

if($uncheck!==null)
{
//添加一个隐藏域,以便当复选框没有被选中时,仍然会提交一个值
if(isset($htmlOptions['id'])&&$htmlOptions['id']!==false)
$uncheckOptions=array('id'=>self::ID_PREFIX.$htmlOptions['id']);
else
$uncheckOptions=array('id'=>false);
$hidden=self::hiddenField($name,$uncheck,$uncheckOptions);
}
else
$hidden='';

//添加一个隐藏域,以便当复选框没有被选中时,仍然会提交一个值
return$hidden.self::inputField('checkbox',$name,$value,$htmlOptions);
}

生成一个复选框。

参见

  • clientChange
  • inputField
checkBoxList() 方法
public static string checkBoxList(string $name, mixed $select, array $data, array $htmlOptions=array ( ))
$namestring复选框列表的名称。 一旦表单被提交,你可以就这个名称来获取选中的值。
$selectmixed复选框列表的选中项。 这个可以是一个单独的被选中项的字符串,也可以是多个选中项的数组。
$dataarray用于生成复选框列表的值-标签对。 注意,值将自动被HTML编码,然而标签不会。
$htmlOptionsarray附加的HTML选项。 选项将会应用于每个复选框上,下面这些特定的选项是被认可的:
  • template: 字符串,指定如何渲染每个复选框。 默认为"{input} {label}", 其中"{input}"将被生成的复选框标签取代, 而"{label}"会替换为相应的复选框标签的label。
  • separator: 字符串,分隔生成的复选框的字符串。
  • checkAll: 字符串,"check all"复选框指定的标签。 如果指定这个选项,一个'check all'复选框将会显示。 点击这个复选框将会将所有的复选框全选或全不选。
  • checkAllLast: 布尔值,指定是否在筛选框列表后面显示一个'check all'复选框。 如果没有设置这个选项(默认), 或者设置为false, 'check all'复选框将会显示在复选框列表的前面。
  • labelOptions: 数组, 指定为列表中的每个标签渲染的附加的HTML属性。
{return}string生成的复选框列表
源码: framework/web/helpers/CHtml.php#849 (显示) publicstaticfunctioncheckBoxList($name,$select,$data,$htmlOptions=array())
{
$template=isset($htmlOptions['template'])?$htmlOptions['template']:'{input}{label}';
$separator=isset($htmlOptions['separator'])?$htmlOptions['separator']:"<br/>n";
unset($htmlOptions['template'],$htmlOptions['separator']);

if(substr($name,-2)!=='[]')
$name.='[]';

if(isset($htmlOptions['checkAll']))
{
$checkAllLabel=$htmlOptions['checkAll'];
$checkAllLast=isset($htmlOptions['checkAllLast'])&&$htmlOptions['checkAllLast'];
}
unset($htmlOptions['checkAll'],$htmlOptions['checkAllLast']);

$labelOptions=isset($htmlOptions['labelOptions'])?$htmlOptions['labelOptions']:array();
unset($htmlOptions['labelOptions']);

$items=array();
$baseID=self::getIdByName($name);
$id=0;
$checkAll=true;

foreach($dataas$value=>$label)
{
$checked=!is_array($select)&&!strcmp($value,$select)||is_array($select)&&in_array($value,$select);
$checkAll=$checkAll&&$checked;
$htmlOptions['value']=$value;
$htmlOptions['id']=$baseID.'_'.$id++;
$option=self::checkBox($name,$checked,$htmlOptions);
$label=self::label($label,$htmlOptions['id'],$labelOptions);
$items[]=strtr($template,array('{input}'=>$option,'{label}'=>$label));
}

if(isset($checkAllLabel))
{
$htmlOptions['value']=1;
$htmlOptions['id']=$id=$baseID.'_all';
$option=self::checkBox($id,$checkAll,$htmlOptions);
$label=self::label($checkAllLabel,$id,$labelOptions);
$item=strtr($template,array('{input}'=>$option,'{label}'=>$label));
if($checkAllLast)
$items[]=$item;
else
array_unshift($items,$item);
$name=strtr($name,array('['=>'\[',']'=>'\]'));
$js=<<<EOD
$('#$id').click(function(){
$("input[name='$name']").prop('checked',this.checked);
});
$("input[name='$name']").click(function(){
$('#$id').prop('checked',!$("input[name='$name']:not(:checked)").length);
});
$('#$id').prop('checked',!$("input[name='$name']:not(:checked)").length);
EOD;
$cs=Yii::app()->getClientScript();
$cs->registerCoreScript('jquery');
$cs->registerScript($id,$js);
}

returnself::tag('span',array('id'=>$baseID),implode($separator,$items));
}

生成一个复选框列表。 一个允许多选的复选框列表,比如listBox. 作为一个结果,相对的POST值是一个数组。

clientChange() 方法
protected static void clientChange(string $event, array &$htmlOptions)
$eventstring事件名(不带'on')
$htmlOptionsarrayHTML属性,可能包含以下 特殊属性来指定客户端改变行为:
  • submit: 字符串,指定该按钮应该提交的URL。如果为空,当前请求的URL将被使用。
  • params: 数组,名称-值对的形式,应该和表单一起提交。这仅用于'submit'选项被指定的时候。
  • csrf: 布尔值,当CHttpRequest::enableCsrfValidation为true时,是否提交一个CSRF令牌。默认为false。 当元素周围没有表单时,你可能会设置这个为true。 这个选项仅当'sumit'选项设置时才有意义。
  • return: 布尔值,返回值是javascript。默认为false, 意味着javascript的结果将不能引起事件的默认行为。
  • confirm: 字符串,指定显示在弹出的对话框中的信息。
  • ajax: 数组,指定的AJAX选项(请参阅ajax)。
  • live: 布尔值,事件处理程序应该附加live/delegate样式还是用直接的样式。如果没有设置,liveEvents将会被使用,这个选项自1.1.6版可用。
这个参数自1.1.1版就已经可用。
源码: framework/web/helpers/CHtml.php#1893 (显示) protectedstaticfunctionclientChange($event,&$htmlOptions)
{
if(!isset($htmlOptions['submit'])&&!isset($htmlOptions['confirm'])&&!isset($htmlOptions['ajax']))
return;

if(isset($htmlOptions['live']))
{
$live=$htmlOptions['live'];
unset($htmlOptions['live']);
}
else
$live=self::$liveEvents;

if(isset($htmlOptions['return'])&&$htmlOptions['return'])
$return='returntrue';
else
$return='returnfalse';

if(isset($htmlOptions['on'.$event]))
{
$handler=trim($htmlOptions['on'.$event],';').';';
unset($htmlOptions['on'.$event]);
}
else
$handler='';

if(isset($htmlOptions['id']))
$id=$htmlOptions['id'];
else
$id=$htmlOptions['id']=isset($htmlOptions['name'])?$htmlOptions['name']:self::ID_PREFIX.self::$count++;

$cs=Yii::app()->getClientScript();
$cs->registerCoreScript('jquery');

if(isset($htmlOptions['submit']))
{
$cs->registerCoreScript('yii');
$request=Yii::app()->getRequest();
if($request->enableCsrfValidation&&isset($htmlOptions['csrf'])&&$htmlOptions['csrf'])
$htmlOptions['params'][$request->csrfTokenName]=$request->getCsrfToken();
if(isset($htmlOptions['params']))
$params=CJavaScript::encode($htmlOptions['params']);
else
$params='{}';
if($htmlOptions['submit']!=='')
$url=CJavaScript::quote(self::normalizeUrl($htmlOptions['submit']));
else
$url='';
$handler.="jQuery.yii.submitForm(this,'$url',$params);{$return};";
}

if(isset($htmlOptions['ajax']))
$handler.=self::ajax($htmlOptions['ajax'])."{$return};";

if(isset($htmlOptions['confirm']))
{
$confirm='confirm(''.CJavaScript::quote($htmlOptions['confirm']).'')';
if($handler!=='')
$handler="if($confirm){".$handler."}elsereturnfalse;";
else
$handler="return$confirm;";
}

if($live)
$cs->registerScript('Yii.CHtml.#'.$id,"$('body').on('$event','#$id',function(){{$handler}});");
else
$cs->registerScript('Yii.CHtml.#'.$id,"$('#$id').on('$event',function(){{$handler}});");
unset($htmlOptions['params'],$htmlOptions['submit'],$htmlOptions['ajax'],$htmlOptions['confirm'],$htmlOptions['return'],$htmlOptions['csrf']);
}

生成JavaScript与指定的客户端变化。

closeTag() 方法
public static string closeTag(string $tag)
$tagstring标签名
{return}string生成的HTML元素标签
源码: framework/web/helpers/CHtml.php#166 (显示) publicstaticfunctioncloseTag($tag)
{
return'</'.$tag.'>';
}

生成一个HTML元素的结束标记

css() 方法
public static string css(string $text, string $media='')
$textstringCSS内容
$mediastring这个CSS适用于的media。
{return}string密封好的CSS
源码: framework/web/helpers/CHtml.php#228 (显示) publicstaticfunctioncss($text,$media='')
{
if($media!=='')
$media='media="'.$media.'"';
return"<styletype="text/css"{$media}>n/*<![CDATA[*/n{$text}n/*]]>*/n</style>";
}

将给定的CSS内容密封到一个CSS标签中。

cssFile() 方法
public static string cssFile(string $url, string $media='')
$urlstringCSS的URL
$mediastringCSS应用的media。
{return}stringCSS链接
源码: framework/web/helpers/CHtml.php#258 (显示) publicstaticfunctioncssFile($url,$media='')
{
if($media!=='')
$media='media="'.$media.'"';
return'<linkrel="stylesheet"type="text/css"href="'.self::encode($url).'"'.$media.'/>';
}

特定的CSS文件的链接。

decode() 方法 (可用自 v1.1.8)
public static string decode(string $text)
$textstring要被解码的数据
{return}string解码后的数据
源码: framework/web/helpers/CHtml.php#96 (显示) publicstaticfunctiondecode($text)
{
returnhtmlspecialchars_decode($text,ENT_QUOTES);
}

把特殊的HTML实体解码为相对应的字符。 这个和encode()是相反的功能。

参见

  • http://www.php.net/manual/en/function.htmlspecialchars-decode.php
dropDownList() 方法
public static string dropDownList(string $name, string $select, array $data, array $htmlOptions=array ( ))
$namestring下拉列表的名称
$selectstring被选中的值
$dataarray用来生成列表选项的数据(值=>显示). 你可以使用listData来生这个数据。 请参考listOptions来了解这个数据如何生成列表选项。 注意,这个方法会自动的将值和标签HTML编码。
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) 此外,下面这些选项也被下拉列表所支持:
  • encode: 布尔值,指定是否对值进行编码。默认为true。
  • prompt: 字符串,指定作为第一个列表项的提示文本,它的值是空的。注意,提示文本不会被HTML编码。
  • empty: 字符串,指定空选项的文本,它的值是空的。 ‘empty’选项也可以是一个值-标签对的数组。 每一对都将在一开始渲染为一个列表选项。注意,文本标签不会被HTML编码。
  • options: 数组,每个option标签的指定附加属性。 数组的键名必须是option的值, 数组的键值是option标签的附加的属性。例如,
      array(      'value1'=>array('disabled'=>true, 'label'=>'value 1'),      'value2'=>array('label'=>'value 2'),  );
    
{return}string生成的下拉列表
源码: framework/web/helpers/CHtml.php#763 (显示) publicstaticfunctiondropDownList($name,$select,$data,$htmlOptions=array())
{
$htmlOptions['name']=$name;
if(!isset($htmlOptions['id']))
$htmlOptions['id']=self::getIdByName($name);
elseif($htmlOptions['id']===false)
unset($htmlOptions['id']);
self::clientChange('change',$htmlOptions);
$options="n".self::listOptions($select,$data,$htmlOptions);
returnself::tag('select',$htmlOptions,$options);
}

生成一个下拉列表。

参见

  • clientChange
  • inputField
  • listData
encode() 方法
public static string encode(string $text)
$textstring要被编码的数据
{return}string编码后的数据
源码: framework/web/helpers/CHtml.php#83 (显示) publicstaticfunctionencode($text)
{
returnhtmlspecialchars($text,ENT_QUOTES,Yii::app()->charset);
}

把特殊的字符编码为HTML实体。 application charset将被用于编码。

参见

  • http://www.php.net/manual/en/function.htmlspecialchars.php
encodeArray() 方法
public static array encodeArray(array $data)
$dataarray要被编码的数据
{return}array编码后的数据
源码: framework/web/helpers/CHtml.php#110 (显示) publicstaticfunctionencodeArray($data)
{
$d=array();
foreach($dataas$key=>$value)
{
if(is_string($key))
$key=htmlspecialchars($key,ENT_QUOTES,Yii::app()->charset);
if(is_string($value))
$value=htmlspecialchars($value,ENT_QUOTES,Yii::app()->charset);
elseif(is_array($value))
$value=self::encodeArray($value);
$d[$key]=$value;
}
return$d;
}

把一个字符串数组中的特殊字符编码为HTML实体。 如果需要的话,数组的键名和键值都将被编码。 如果键值是一个数组,这个方法也将递归的将它编码 application charset将被用于编码。

参见

  • http://www.php.net/manual/en/function.htmlspecialchars.php
endForm() 方法
public static string endForm()
{return}string生成的标签
源码: framework/web/helpers/CHtml.php#335 (显示) publicstaticfunctionendForm()
{
return'</form>';
}

生成一个表单的结束标签。

参见

  • beginForm
error() 方法
public static 数据显示字符串。如果没有发现错误则为空。 error(CModel $model, string $attribute, array $htmlOptions=array ( ))
$modelCModel数据模型
$attributestring属性名
$htmlOptionsarray额外的被渲染到div容器的HTML属性。
{return}数据显示字符串。如果没有发现错误则为空。
源码: framework/web/helpers/CHtml.php#1624 (显示) publicstaticfunctionerror($model,$attribute,$htmlOptions=array())
{
self::resolveName($model,$attribute);//turn[a][b]attrintoattr
$error=$model->getError($attribute);
if($error!='')
{
if(!isset($htmlOptions['class']))
$htmlOptions['class']=self::$errorMessageCss;
returnself::tag('div',$htmlOptions,$error);
}
else
return'';
}

显示一个模型属性的第一个有效的错误。

参见

  • CModel::getErrors
  • errorMessageCss
errorSummary() 方法
public static string errorSummary(mixed $model, string $header=NULL, string $footer=NULL, array $htmlOptions=array ( ))
$modelmixed输入错误要被显示的模型。 可以是一个单独的模型,也可以是一个模型的数组。
$headerstring出现在错误前面的一段HTML代码
$footerstring出现在错误后面的一段HTML代码
$htmlOptionsarray额外的被渲染到div容器的HTML属性。 一个名为'firstError'的属性是被认可的,当设置为true, 将只显示每个属性的第一个错误信息。 如果不设置或设置为false,所有的错误信息都将会显示。 这个选项自1.1.3版可用。
{return}string错误摘要。如果没有错误被找到则为空。
源码: framework/web/helpers/CHtml.php#1578 (显示) publicstaticfunctionerrorSummary($model,$header=null,$footer=null,$htmlOptions=array())
{
$content='';
if(!is_array($model))
$model=array($model);
if(isset($htmlOptions['firstError']))
{
$firstError=$htmlOptions['firstError'];
unset($htmlOptions['firstError']);
}
else
$firstError=false;
foreach($modelas$m)
{
foreach($m->getErrors()as$errors)
{
foreach($errorsas$error)
{
if($error!='')
$content.="<li>$error</li>n";
if($firstError)
break;
}
}
}
if($content!=='')
{
if($header===null)
$header='<p>'.Yii::t('yii','Pleasefixthefollowinginputerrors:').'</p>';
if(!isset($htmlOptions['class']))
$htmlOptions['class']=self::$errorSummaryCss;
returnself::tag('div',$htmlOptions,$header."n<ul>n$content</ul>".$footer);
}
else
return'';
}

显示一个或多个模型的有效错误的摘要。

参见

  • CModel::getErrors
  • errorSummaryCss
fileField() 方法
public static string fileField(string $name, string $value='', array $htmlOptions=array ( ))
$namestring输入框的名称
$valuestring输入框的值
$htmlOptionsarray附加的HTML属性(请参阅tag).
{return}string生成的文件输入框
源码: framework/web/helpers/CHtml.php#610 (显示) publicstaticfunctionfileField($name,$value='',$htmlOptions=array())
{
returnself::inputField('file',$name,$value,$htmlOptions);
}

生成一个文件输入框。 注意,你必须设置表单的‘enctype’属性为‘multipart/form-data’。 表单被提交后,上传的文件信息可以通过$_FILES[$name]来获得 (请参阅 PHP documentation).

参见

  • inputField
form() 方法
public static string form(mixed $action='', string $method='post', array $htmlOptions=array ( ))
$actionmixed表单的action链接(关于这个参数详见normalizeUrl。)
$methodstring表单方法(例如 post, get)
$htmlOptionsarray附加的HTML属性(请参阅tag)。
{return}string生成的表单标签。
源码: framework/web/helpers/CHtml.php#293 (显示) publicstaticfunctionform($action='',$method='post',$htmlOptions=array())
{
returnself::beginForm($action,$method,$htmlOptions);
}

生成一个表单的开始标签。 这是beginForm的一个捷径。

getIdByName() 方法
public static string getIdByName(string $name)
$namestring用来生成HTML ID的名称
{return}string根据名称生成的ID。
源码: framework/web/helpers/CHtml.php#1710 (显示) publicstaticfunctiongetIdByName($name)
{
returnstr_replace(array('[]','][','[',']'),array('','_','_',''),$name);
}

根据名称来生成一个有效的HTML ID。

hiddenField() 方法
public static string hiddenField(string $name, string $value='', array $htmlOptions=array ( ))
$namestring输入框的名称
$valuestring输入框的值
$htmlOptionsarray附加的HTML属性(请参阅tag).
{return}string生成的隐藏输入框
源码: framework/web/helpers/CHtml.php#578 (显示) publicstaticfunctionhiddenField($name,$value='',$htmlOptions=array())
{
returnself::inputField('hidden',$name,$value,$htmlOptions);
}

生成一个隐藏的输入框

参见

  • inputField
htmlButton() 方法
public static string htmlButton(string $label='button', array $htmlOptions=array ( ))
$labelstring按钮的标签。 注意,这个值将会直接的插入到按钮元素中,不经过编码处理。
$htmlOptionsarrayadditional 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。)
{return}string生成的按钮标签
源码: framework/web/helpers/CHtml.php#450 (显示) publicstaticfunctionhtmlButton($label='button',$htmlOptions=array())
{
if(!isset($htmlOptions['name']))
$htmlOptions['name']=self::ID_PREFIX.self::$count++;
if(!isset($htmlOptions['type']))
$htmlOptions['type']='button';
self::clientChange('click',$htmlOptions);
returnself::tag('button',$htmlOptions,$label);
}

生成一个使用HTML按钮标签的按钮。 这个方法类似于button, 只是它生成一个按钮标签来替代input标签。

参见

  • clientChange
image() 方法
public static string image(string $src, string $alt='', array $htmlOptions=array ( ))
$srcstring图片的URL
$altstring替代的文字显示
$htmlOptionsarray附加的HTML属性(请参阅tag).
{return}string生成的图片标签
源码: framework/web/helpers/CHtml.php#409 (显示) publicstaticfunctionimage($src,$alt='',$htmlOptions=array())
{
$htmlOptions['src']=$src;
$htmlOptions['alt']=$alt;
returnself::tag('img',$htmlOptions);
}

生成一个图片标签。

imageButton() 方法
public static string imageButton(string $src, array $htmlOptions=array ( ))
$srcstring图片的URL
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。)
{return}string生成的按钮标签
源码: framework/web/helpers/CHtml.php#496 (显示) publicstaticfunctionimageButton($src,$htmlOptions=array())
{
$htmlOptions['src']=$src;
$htmlOptions['type']='image';
returnself::button('submit',$htmlOptions);
}

生成一个图片提交按钮。

参见

  • clientChange
inputField() 方法
protected static string inputField(string $type, string $name, string $value, array $htmlOptions)
$typestringinput标签类型(例如 'text', 'radio')
$namestringinput标签名称
$valuestringinput标签值
$htmlOptionsarray额外的HTML标签的属性(请参阅tag).
{return}string生成的input标签
源码: framework/web/helpers/CHtml.php#1114 (显示) protectedstaticfunctioninputField($type,$name,$value,$htmlOptions)
{
$htmlOptions['type']=$type;
$htmlOptions['value']=$value;
$htmlOptions['name']=$name;
if(!isset($htmlOptions['id']))
$htmlOptions['id']=self::getIdByName($name);
elseif($htmlOptions['id']===false)
unset($htmlOptions['id']);
returnself::tag('input',$htmlOptions);
}

生成一个input标签。 这个方法基于给定的名称和值来生成一个input标签。

label() 方法
public static string label(string $label, string $for, array $htmlOptions=array ( ))
$labelstring标签文本。注意,如果需要的话,你应该把文本HTML编码。
$forstring和这个标签有关的HTML元素的ID。 如果是false,标签的‘for’属性将不会被渲染。
$htmlOptionsarray附加的HTML属性。 下面的HTML选项是被认可的:
  • required: 如果设置为true, 标签的样式将会设置为CSS类'required' (可以用CHtml::$requiredCss来定制), 也可以用CHtml::beforeRequiredLabel 和CHtml::afterRequiredLabel来装饰。
{return}string生成的label标签
源码: framework/web/helpers/CHtml.php#533 (显示) publicstaticfunctionlabel($label,$for,$htmlOptions=array())
{
if($for===false)
unset($htmlOptions['for']);
else
$htmlOptions['for']=$for;
if(isset($htmlOptions['required']))
{
if($htmlOptions['required'])
{
if(isset($htmlOptions['class']))
$htmlOptions['class'].=''.self::$requiredCss;
else
$htmlOptions['class']=self::$requiredCss;
$label=self::$beforeRequiredLabel.$label.self::$afterRequiredLabel;
}
unset($htmlOptions['required']);
}
returnself::tag('label',$htmlOptions,$label);
}

生成一个label标签

link() 方法
public static string link(string $text, mixed $url='#', array $htmlOptions=array ( ))
$textstring链接主体。它不会被编码。因此,如图像标签那样的HTML代码也会被通过。
$urlmixed一个URL或一个路由动作,用于创建一个URL。 关于如何指定这个参数的更多详细情况请参阅normalizeUrl。
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。)
{return}string生成的超链接
源码: framework/web/helpers/CHtml.php#378 (显示) publicstaticfunctionlink($text,$url='#',$htmlOptions=array())
{
if($url!=='')
$htmlOptions['href']=self::normalizeUrl($url);
self::clientChange('click',$htmlOptions);
returnself::tag('a',$htmlOptions,$text);
}

生成一个超链接。

参见

  • normalizeUrl
  • clientChange
linkButton() 方法
public static string linkButton(string $label='submit', array $htmlOptions=array ( ))
$labelstring按钮的标签
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。)
{return}string生成的按钮标签
源码: framework/web/helpers/CHtml.php#511 (显示) publicstaticfunctionlinkButton($label='submit',$htmlOptions=array())
{
if(!isset($htmlOptions['submit']))
$htmlOptions['submit']=isset($htmlOptions['href'])?$htmlOptions['href']:'';
returnself::link($label,'#',$htmlOptions);
}

生成一个链接提交按钮。

参见

  • clientChange
linkTag() 方法
public static string linkTag(string $relation=NULL, string $type=NULL, string $href=NULL, string $media=NULL, array $options=array ( ))
$relationstringlink标签的rel属性。如果是null,属性将不会被生成。
$typestringlink标签的type属性。如果是null,属性将不会被生成。
$hrefstringlink标签的href属性。如果是null,属性将不会被生成。
$mediastringlink标签的media属性。如果是null,属性将不会被生成。
$optionsarray其它选项的名称-值对
{return}string生成的link标签
源码: framework/web/helpers/CHtml.php#209 (显示) publicstaticfunctionlinkTag($relation=null,$type=null,$href=null,$media=null,$options=array())
{
if($relation!==null)
$options['rel']=$relation;
if($type!==null)
$options['type']=$type;
if($href!==null)
$options['href']=$href;
if($media!==null)
$options['media']=$media;
returnself::tag('link',$options);
}

生成一个link标签,可以插入到HTML页面的头部部分。 不要把这个方法与link()相混乱,后者是生成一个超级链接。

listBox() 方法
public static string listBox(string $name, mixed $select, array $data, array $htmlOptions=array ( ))
$namestring列表框的名称
$selectmixed被选中的值。这个可以是一个单独的被选中项的字符串,也可以是多个选中项的数组。
$dataarray用于生成列表选项的数据(值=>显示) 你可以使用listData来生这个数据。 请参考listOptions来了解这个数据如何生成列表选项。 注意,这个方法会自动的将值和标签HTML编码。
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) 此外,下面这些选项也被下拉列表所支持:
  • encode: 布尔值,指定是否对值进行编码。默认为true。
  • prompt: 字符串,指定作为第一个列表项的提示文本,它的值是空的。注意,提示文本不会被HTML编码。
  • empty: 字符串,指定空选项的文本,它的值是空的。 ‘empty’选项也可以是一个值-标签对的数组。 每一对都将在一开始渲染为一个列表选项。注意,文本标签不会被HTML编码。
  • options: 数组,每个option标签的指定附加属性。 数组的键名必须是option的值, 数组的键值是option标签的附加的属性。例如,
      array(      'value1'=>array('disabled'=>true, 'label'=>'value 1'),      'value2'=>array('label'=>'value 2'),  );
    
{return}string生成的列表框
源码: framework/web/helpers/CHtml.php#808 (显示) publicstaticfunctionlistBox($name,$select,$data,$htmlOptions=array())
{
if(!isset($htmlOptions['size']))
$htmlOptions['size']=4;
if(isset($htmlOptions['multiple']))
{
if(substr($name,-2)!=='[]')
$name.='[]';
}
returnself::dropDownList($name,$select,$data,$htmlOptions);
}

生成一个列表框。

参见

  • clientChange
  • inputField
  • listData
listData() 方法
public static array listData(array $models, string $valueField, string $textField, string $groupField='')
$modelsarray模型对象的列表。 这个参数也可以是一个关联的数组(例如CDbCommand::queryAll的结果)。
$valueFieldstring列表选项值的属性名
$textFieldstring列表选项文本的属性名
$groupFieldstring列表选项组的属性名。如果是空,将不会生成组。
{return}array可用于dropDownList, listBox等的列表数据。
源码: framework/web/helpers/CHtml.php#1652 (显示) publicstaticfunctionlistData($models,$valueField,$textField,$groupField='')
{
$listData=array();
if($groupField==='')
{
foreach($modelsas$model)
{
$value=self::value($model,$valueField);
$text=self::value($model,$textField);
$listData[$value]=$text;
}
}
else
{
foreach($modelsas$model)
{
$group=self::value($model,$groupField);
$value=self::value($model,$valueField);
$text=self::value($model,$textField);
$listData[$group][$value]=$text;
}
}
return$listData;
}

为列表型HTML元素生成适当的数据。 生成的数据可用于dropDownList, listBox, checkBoxList, radioButtonList,和它们的加强版(比如activeDropDownList). 注意,这个方法不会对生成的数据HTML编码。 如果需要的话你可以调用encodeArray来给它编码。 请参阅value方法来了解如何指定值字段,文本字段以及组字段。

listOptions() 方法
public static string listOptions(mixed $selection, array $listData, array &$htmlOptions)
$selectionmixed被选中的值。这个可以是一个单独的被选中项的字符串,也可以是多个选中项的数组。
$listDataarray选项数据(请参阅listData)
$htmlOptionsarray额外的HTML属性。下面两个特定的属性是被认可:
  • encode: 布尔值,指定是否对值进行编码。默认为true。
  • prompt: 字符串,指定作为第一个列表选项的提示文本。它的值为空。注意,提示文本不会被HTML编码。
  • empty: 字符串,指定空选项的文本,它的值为空。 'empty'选项也可以是一个值-标签对形式的数组。 在一开始每个对都会用于渲染一个列表的选项。注意,文本标签不会被HTML编码。
  • options: 数组,为每个OPTION标签额外指定的属性。 数组的键名必须是选项的值, 数组的键值是选项标签的额外的属性,名称-值对的形式。例如,
      array(      'value1'=>array('disabled'=>true, 'label'=>'value 1'),      'value2'=>array('label'=>'value 2'),  );
    
  • key: 字符串,指定选择对象的key属性名称specifies the name of key attribute of the selection object(s). 当作为对象实体来请求时使用。在这种情况下,This is used when the selection is represented in terms of objects. In this case, 这个用对象的选项的key来命名的属性将作为真实的选中的值。 这个选项默认为'primaryKey', 意味着使用选中实体的'primaryKey'属性值。 这个选项自1.1.3版可用。
{return}string生成的列表选项
源码: framework/web/helpers/CHtml.php#1809 (显示) publicstaticfunctionlistOptions($selection,$listData,&$htmlOptions)
{
$raw=isset($htmlOptions['encode'])&&!$htmlOptions['encode'];
$content='';
if(isset($htmlOptions['prompt']))
{
$content.='<optionvalue="">'.strtr($htmlOptions['prompt'],array('<'=>'&lt;','>'=>'&gt;'))."</option>n";
unset($htmlOptions['prompt']);
}
if(isset($htmlOptions['empty']))
{
if(!is_array($htmlOptions['empty']))
$htmlOptions['empty']=array(''=>$htmlOptions['empty']);
foreach($htmlOptions['empty']as$value=>$label)
$content.='<optionvalue="'.self::encode($value).'">'.strtr($label,array('<'=>'&lt;','>'=>'&gt;'))."</option>n";
unset($htmlOptions['empty']);
}

if(isset($htmlOptions['options']))
{
$options=$htmlOptions['options'];
unset($htmlOptions['options']);
}
else
$options=array();

$key=isset($htmlOptions['key'])?$htmlOptions['key']:'primaryKey';
if(is_array($selection))
{
foreach($selectionas$i=>$item)
{
if(is_object($item))
$selection[$i]=$item->$key;
}
}
elseif(is_object($selection))
$selection=$selection->$key;

foreach($listDataas$key=>$value)
{
if(is_array($value))
{
$content.='<optgrouplabel="'.($raw?$key:self::encode($key))."">n";
$dummy=array('options'=>$options);
if(isset($htmlOptions['encode']))
$dummy['encode']=$htmlOptions['encode'];
$content.=self::listOptions($selection,$value,$dummy);
$content.='</optgroup>'."n";
}
else
{
$attributes=array('value'=>(string)$key,'encode'=>!$raw);
if(!is_array($selection)&&!strcmp($key,$selection)||is_array($selection)&&in_array($key,$selection))
$attributes['selected']='selected';
if(isset($options[$key]))
$attributes=array_merge($attributes,$options[$key]);
$content.=self::tag('option',$attributes,$raw?(string)$value:self::encode((string)$value))."n";
}
}

unset($htmlOptions['key']);

return$content;
}

生成一个列表选项。

mailto() 方法
public static string mailto(string $text, string $email='', array $htmlOptions=array ( ))
$textstring链接主体。它不会被编码。因此,如图像标签那样的HTML代码也会被通过。
$emailstringemail地址。如果是空,第一个参数(链接主体)将被作为email地址。
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。)
{return}stringthe 生成的电子邮件链接
源码: framework/web/helpers/CHtml.php#395 (显示) publicstaticfunctionmailto($text,$email='',$htmlOptions=array())
{
if($email==='')
$email=$text;
returnself::link($text,'mailto:'.$email,$htmlOptions);
}

创建一个电子邮件链接。

参见

  • clientChange
metaTag() 方法
public static string metaTag(string $content, string $name=NULL, string $httpEquiv=NULL, array $options=array ( ))
$contentstringmeta标签的内容属性
$namestringmeta标签的属性名。如果是null,属性将不会被生成
$httpEquivstringmeta标签的http-equiv属性。如果是null,属性将不会被生成
$optionsarray其它选项的名称-值对(例如 'scheme', 'lang')
{return}string生成的meta标签
源码: framework/web/helpers/CHtml.php#189 (显示) publicstaticfunctionmetaTag($content,$name=null,$httpEquiv=null,$options=array())
{
if($name!==null)
$options['name']=$name;
if($httpEquiv!==null)
$options['http-equiv']=$httpEquiv;
$options['content']=$content;
returnself::tag('meta',$options);
}

生成一个meta标签,可以插入到HTML页面的头部部分。

normalizeUrl() 方法
public static string normalizeUrl(mixed $url)
$urlmixed生成一个有效的URL的参数
{return}string有效的URL
源码: framework/web/helpers/CHtml.php#1088 (显示) publicstaticfunctionnormalizeUrl($url)
{
if(is_array($url))
{
if(isset($url[0]))
{
if(($c=Yii::app()->getController())!==null)
$url=$c->createUrl($url[0],array_splice($url,1));
else
$url=Yii::app()->createUrl($url[0],array_splice($url,1));
}
else
$url='';
}
return$url===''?Yii::app()->getRequest()->getUrl():$url;
}

通过标准的输入来生成一个有效的URL。

如果输入参数是一个空字符串,将返回当前请求的URL。

如果输入参数不是一个空字符串, 它被当作一个有效的URL,不作任何改变被返回。

如果输入参数是一个数组,它被视为一个控制器路由和一个GET参数列表, 将会调用CController::createUrl方法来创建一个URL。 既然这样,数组的第一个元素是指控制器的路由, 其它的键名-键值对指额外的URL参数。 例如,array('post/list', 'page'=>3) 可以生成一个URL /index.php?r=post/list&page=3.

openTag() 方法
public static string openTag(string $tag, array $htmlOptions=array ( ))
$tagstring标签名
$htmlOptionsarray元素的属性。属性值将被encode()HTML编码。 如果给了一个'encode'属性,而且属性值为false的话, 其余的属性值将不会被HTML编码。 自1.1.5起,属性值为null的属性将不会被渲染。
{return}string生成的HTML元素标签
源码: framework/web/helpers/CHtml.php#156 (显示) publicstaticfunctionopenTag($tag,$htmlOptions=array())
{
return'<'.$tag.self::renderAttributes($htmlOptions).'>';
}

生成一个HTML元素的开始标签。

pageStateField() 方法
public static string pageStateField(string $value)
$valuestring序列化的持久状态
{return}string生成的隐藏域
源码: framework/web/helpers/CHtml.php#362 (显示) publicstaticfunctionpageStateField($value)
{
return'<inputtype="hidden"name="'.CController::STATE_INPUT_NAME.'"value="'.$value.'"/>';
}

生成一个用于存储页面持久状态的隐藏域。 这个方法在内部为statefulForm所用。

passwordField() 方法
public static string passwordField(string $name, string $value='', array $htmlOptions=array ( ))
$namestring输入框的名称
$valuestring输入框的值
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。)
{return}string生成的密码输入框
源码: framework/web/helpers/CHtml.php#593 (显示) publicstaticfunctionpasswordField($name,$value='',$htmlOptions=array())
{
self::clientChange('change',$htmlOptions);
returnself::inputField('password',$name,$value,$htmlOptions);
}

生成一个密码输入框。

参见

  • clientChange
  • inputField
radioButton() 方法
public static string radioButton(string $name, boolean $checked=false, array $htmlOptions=array ( ))
$namestring按钮的名称
$checkedboolean单选按钮是否被选中状态
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) 自1.1.2版起,一个名称为‘uncheckValue’的特殊选项可以被使用, 这个特殊选项的值在当单选按钮没有被选中时返回。 如果设置了这个特殊选项值,那么一个隐藏域会被渲染,以便当单选按钮没有被选中时,我们仍然可以获得一个未选中时的值。 如果‘uncheckValue’没有被设置或设置为NULL,隐藏域将不会被渲染。
{return}string生成的单选按钮
源码: framework/web/helpers/CHtml.php#650 (显示) publicstaticfunctionradioButton($name,$checked=false,$htmlOptions=array())
{
if($checked)
$htmlOptions['checked']='checked';
else
unset($htmlOptions['checked']);
$value=isset($htmlOptions['value'])?$htmlOptions['value']:1;
self::clientChange('click',$htmlOptions);

if(array_key_exists('uncheckValue',$htmlOptions))
{
$uncheck=$htmlOptions['uncheckValue'];
unset($htmlOptions['uncheckValue']);
}
else
$uncheck=null;

if($uncheck!==null)
{
//添加一个隐藏域,以便当单选按钮没有被选中时,仍然会提交一个值
if(isset($htmlOptions['id'])&&$htmlOptions['id']!==false)
$uncheckOptions=array('id'=>self::ID_PREFIX.$htmlOptions['id']);
else
$uncheckOptions=array('id'=>false);
$hidden=self::hiddenField($name,$uncheck,$uncheckOptions);
}
else
$hidden='';

//添加一个隐藏域,以便当单选按钮没有被选中时,仍然会提交一个值
return$hidden.self::inputField('radio',$name,$value,$htmlOptions);
}

生成一个单选按钮。

参见

  • clientChange
  • inputField
radioButtonList() 方法
public static string radioButtonList(string $name, string $select, array $data, array $htmlOptions=array ( ))
$namestring单选按钮列表的名称。 一旦表单被提交,你可以使用这个名称来获取被选中的值。
$selectstring被选中的单选按钮。
$dataarray用于生成单选按钮列表的值-标签对。 注意,值将自动被HTML编码,然而标签不会。
$htmlOptionsarray附加的HTML选项。 选项将会应用于每个单选按钮上,下面这些特定的选项是被认可的:
  • template: 字符串,指定如何渲染每个复选框。 默认为"{input} {label}", 其中"{input}"将被生成的单选按钮标签取代, 而"{label}"会替换为相应的复选框标签的label。
  • separator: 字符串,分隔生成的单选按钮的字符串。默认为一个新行(
  • labelOptions: 数组, 指定为列表中的每个标签渲染的附加的HTML属性。
{return}string生成的单选按钮列表
源码: framework/web/helpers/CHtml.php#934 (显示) publicstaticfunctionradioButtonList($name,$select,$data,$htmlOptions=array())
{
$template=isset($htmlOptions['template'])?$htmlOptions['template']:'{input}{label}';
$separator=isset($htmlOptions['separator'])?$htmlOptions['separator']:"<br/>n";
unset($htmlOptions['template'],$htmlOptions['separator']);

$labelOptions=isset($htmlOptions['labelOptions'])?$htmlOptions['labelOptions']:array();
unset($htmlOptions['labelOptions']);

$items=array();
$baseID=self::getIdByName($name);
$id=0;
foreach($dataas$value=>$label)
{
$checked=!strcmp($value,$select);
$htmlOptions['value']=$value;
$htmlOptions['id']=$baseID.'_'.$id++;
$option=self::radioButton($name,$checked,$htmlOptions);
$label=self::label($label,$htmlOptions['id'],$labelOptions);
$items[]=strtr($template,array('{input}'=>$option,'{label}'=>$label));
}
returnself::tag('span',array('id'=>$baseID),implode($separator,$items));
}

生成一个单选按钮列表。 一个单选按钮列表就像是一个复选框列表, 只是它是允许选中单个。.

refresh() 方法 (可用自 v1.1.1)
public static void refresh(integer $seconds, string $url='')
$secondsinteger刷新页面前等待的秒数
$urlstring要跳转的URL,如果是空,意味着当前页。
源码: framework/web/helpers/CHtml.php#244 (显示) publicstaticfunctionrefresh($seconds,$url='')
{
$content="$seconds";
if($url!=='')
$content.=';'.self::normalizeUrl($url);
Yii::app()->clientScript->registerMetaTag($content,null,'refresh');
}

注册一个“刷新”meta标签。 这个方法可以在一个视图的任何地方被唤起。 它将用CClientScript来注册一个“刷新”meta标签, 可以让页面在特定的秒数后刷新。

renderAttributes() 方法
public static string renderAttributes(array $htmlOptions)
$htmlOptionsarray将被渲染的属性
{return}string渲染结果
源码: framework/web/helpers/CHtml.php#2067 (显示) publicstaticfunctionrenderAttributes($htmlOptions)
{
static$specialAttributes=array(
'checked'=>1,
'declare'=>1,
'defer'=>1,
'disabled'=>1,
'ismap'=>1,
'multiple'=>1,
'nohref'=>1,
'noresize'=>1,
'readonly'=>1,
'selected'=>1,
);

if($htmlOptions===array())
return'';

$html='';
if(isset($htmlOptions['encode']))
{
$raw=!$htmlOptions['encode'];
unset($htmlOptions['encode']);
}
else
$raw=false;

if($raw)
{
foreach($htmlOptionsas$name=>$value)
{
if(isset($specialAttributes[$name]))
{
if($value)
$html.=''.$name.'="'.$name.'"';
}
elseif($value!==null)
$html.=''.$name.'="'.$value.'"';
}
}
else
{
foreach($htmlOptionsas$name=>$value)
{
if(isset($specialAttributes[$name]))
{
if($value)
$html.=''.$name.'="'.$name.'"';
}
elseif($value!==null)
$html.=''.$name.'="'.self::encode($value).'"';
}
}
return$html;
}

渲染HTML标签属性。 自1.1.5版起,属性值为null的属性将不会被渲染。 特殊的属性,像'checked', 'disabled', 'readonly', 将被渲染为为它们相对应的布尔值。

resetButton() 方法
public static string resetButton(string $label='reset', array $htmlOptions=array ( ))
$labelstring按钮的标签
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。)
{return}string生成的按钮标签
源码: framework/web/helpers/CHtml.php#482 (显示) publicstaticfunctionresetButton($label='reset',$htmlOptions=array())
{
$htmlOptions['type']='reset';
returnself::button($label,$htmlOptions);
}

生成一个重置按钮。

参见

  • clientChange
resolveName() 方法
public static string resolveName(CModel $model, string &$attribute)
$modelCModel数据模型
$attributestring属性
{return}string输入标签的名称
源码: framework/web/helpers/CHtml.php#1990 (显示) publicstaticfunctionresolveName($model,&$attribute)
{
if(($pos=strpos($attribute,'['))!==false)
{
if($pos!==0)//e.g.name[a][b]
returnget_class($model).'['.substr($attribute,0,$pos).']'.substr($attribute,$pos);
if(($pos=strrpos($attribute,']'))!==false&&$pos!==strlen($attribute)-1)//e.g.[a][b]name
{
$sub=substr($attribute,0,$pos+1);
$attribute=substr($attribute,$pos+1);
returnget_class($model).$sub.'['.$attribute.']';
}
if(preg_match('/](w+[.*)$/',$attribute,$matches))
{
$name=get_class($model).'['.str_replace(']','][',trim(strtr($attribute,array(']['=>']','['=>']')),']')).']';
$attribute=$matches[1];
return$name;
}
}
returnget_class($model).'['.$attribute.']';
}

生成一个模型属性的输入名称 注意,调用此方法后,如果名称包含方括号前的真实属性的名称(主要用于表格输入), 属性的名称可能会被修改。

resolveNameID() 方法
public static void resolveNameID(CModel $model, string &$attribute, array &$htmlOptions)
$modelCModel数据模型
$attributestring属性
$htmlOptionsarrayHTML选项
源码: framework/web/helpers/CHtml.php#1972 (显示) publicstaticfunctionresolveNameID($model,&$attribute,&$htmlOptions)
{
if(!isset($htmlOptions['name']))
$htmlOptions['name']=self::resolveName($model,$attribute);
if(!isset($htmlOptions['id']))
$htmlOptions['id']=self::getIdByName($htmlOptions['name']);
elseif($htmlOptions['id']===false)
unset($htmlOptions['id']);
}

生成一个模型属性的输入框名称和ID。 这个方法会根据设置的'name'和'id'属性来更新HTML的选项。 此方法也可以修改属性的名称, 如果名称中包含方括号的话(主要用于表格输入)。

resolveValue() 方法 (可用自 v1.1.3)
public static mixed resolveValue(CModel $model, string $attribute)
$modelCModel数据模型
$attributestring属性名
{return}mixed属性值
源码: framework/web/helpers/CHtml.php#2021 (显示) publicstaticfunctionresolveValue($model,$attribute)
{
if(($pos=strpos($attribute,'['))!==false)
{
if($pos===0)//[a]name[b][c],shouldignore[a]
{
if(preg_match('/](w+)/',$attribute,$matches))
$attribute=$matches[1];
if(($pos=strpos($attribute,'['))===false)
return$model->$attribute;
}
$name=substr($attribute,0,$pos);
$value=$model->$name;
foreach(explode('][',rtrim(substr($attribute,$pos+1),']'))as$id)
{
if(is_array($value)&&isset($value[$id]))
$value=$value[$id];
else
returnnull;
}
return$value;
}
else
return$model->$attribute;
}

评估模型的属性值。 这个方法认可一个数组格式的属性名。 例如,如果属性名为'name[a][b]', 那么"$model->name['a']['b']"的值将被返回。

script() 方法
public static string script(string $text)
$textstring将被密封的Javascript
{return}string密封好的Javascript
源码: framework/web/helpers/CHtml.php#270 (显示) publicstaticfunctionscript($text)
{
return"<scripttype="text/javascript">n/*<![CDATA[*/n{$text}n/*]]>*/n</script>";
}

将给定的Javascript密封到一个script标签中。

scriptFile() 方法
public static string scriptFile(string $url)
$urlstringJavaScript文件的URL
{return}stringJavaScript文件标签
源码: framework/web/helpers/CHtml.php#280 (显示) publicstaticfunctionscriptFile($url)
{
return'<scripttype="text/javascript"src="'.self::encode($url).'"></script>';
}

包含一个Javascript文件。

statefulForm() 方法
public static string statefulForm(mixed $action='', string $method='post', array $htmlOptions=array ( ))
$actionmixed表单的action链接(关于这个参数详见normalizeUrl。)
$methodstring表单方法(例如 post, get)
$htmlOptionsarray附加的HTML属性(请参阅tag)。
{return}string生成的表单标签。
源码: framework/web/helpers/CHtml.php#350 (显示) publicstaticfunctionstatefulForm($action='',$method='post',$htmlOptions=array())
{
returnself::form($action,$method,$htmlOptions)."n".
self::tag('div',array('style'=>'display:none'),self::pageStateField(''));
}

生成一个有状态的表单标签。 一个有状态的表单标签类似于form,除这以外, 它还可以渲染一个附加的用于持久存储页面状态的隐藏域。 如果你想在表单提交的时候可以访问页面持久状态,那么你就可以用这个方法生成一个表单标签

submitButton() 方法
public static string submitButton(string $label='submit', array $htmlOptions=array ( ))
$labelstring按钮的标签
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。)
{return}string生成的按钮标签
源码: framework/web/helpers/CHtml.php#468 (显示) publicstaticfunctionsubmitButton($label='submit',$htmlOptions=array())
{
$htmlOptions['type']='submit';
returnself::button($label,$htmlOptions);
}

生成一个提交按钮。

参见

  • clientChange
tag() 方法
public static string tag(string $tag, array $htmlOptions=array ( ), mixed $content=false, boolean $closeTag=true)
$tagstring标签名
$htmlOptionsarray元素的属性。属性值将被encode()HTML编码。 如果给了一个'encode'属性,而且属性值为false的话, 其余的属性值将不会被HTML编码。 自1.1.5起,属性值为null的属性将不会被渲染。
$contentmixed被附加在开启和闭合的元素标记之间的内容。它不会被HTML编码。 如果是false,意味着没有主体内容。
$closeTagboolean是否生成结束标记。
{return}string生成的HTML元素标签
源码: framework/web/helpers/CHtml.php#138 (显示) publicstaticfunctiontag($tag,$htmlOptions=array(),$content=false,$closeTag=true)
{
$html='<'.$tag.self::renderAttributes($htmlOptions);
if($content===false)
return$closeTag?$html.'/>':$html.'>';
else
return$closeTag?$html.'>'.$content.'</'.$tag.'>':$html.'>'.$content;
}

生成一个HTML元素。

textArea() 方法
public static string textArea(string $name, string $value='', array $htmlOptions=array ( ))
$namestring文本框的名称
$valuestring文本框的值
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。)
{return}string生成的文本框
源码: framework/web/helpers/CHtml.php#625 (显示) publicstaticfunctiontextArea($name,$value='',$htmlOptions=array())
{
$htmlOptions['name']=$name;
if(!isset($htmlOptions['id']))
$htmlOptions['id']=self::getIdByName($name);
elseif($htmlOptions['id']===false)
unset($htmlOptions['id']);
self::clientChange('change',$htmlOptions);
returnself::tag('textarea',$htmlOptions,isset($htmlOptions['encode'])&&!$htmlOptions['encode']?$value:self::encode($value));
}

生成一个文本框。

参见

  • clientChange
  • inputField
textField() 方法
public static string textField(string $name, string $value='', array $htmlOptions=array ( ))
$namestring输入框的名称
$valuestring输入框的值
$htmlOptionsarray附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。)
{return}string生成的文本输入框
源码: framework/web/helpers/CHtml.php#564 (显示) publicstaticfunctiontextField($name,$value='',$htmlOptions=array())
{
self::clientChange('change',$htmlOptions);
returnself::inputField('text',$name,$value,$htmlOptions);
}

生成一个文本输入框。

参见

  • clientChange
  • inputField
value() 方法
public static mixed value(mixed $model, string $attribute, mixed $defaultValue=NULL)
$modelmixed模型。可以是一个对象也可以是一个数组。
$attributestring属性名(用点连接的多重属性)
$defaultValuemixed当属性不存在时返回的默认值
{return}mixedn属性值
源码: framework/web/helpers/CHtml.php#1691 (显示) publicstaticfunctionvalue($model,$attribute,$defaultValue=null)
{
foreach(explode('.',$attribute)as$name)
{
if(is_object($model))
$model=$model->$name;
elseif(is_array($model)&&isset($model[$name]))
$model=$model[$name];
else
return$defaultValue;
}
return$model;
}

评估给定的模型中指定属性的值。 属性名可以用点语法的形式给出。例如, 如果属性是"author.firstName",这个方法将返回"$model->author->firstName"的值。 如果属性不存在或者在中间被打断, 将会返回一个默认值(被看作是最后一个参数)(例如$model->author是null). 模型可以是一个对象也可以是一个数组。 如果是数组,属性被看作是数组的一个键名。 例如"author.firstName",意味着是数组值"$model['author']['firstName']"。