CHtml
包 | system.web.helpers |
---|---|
继承 | class CHtml |
源自 | 1.0 |
版本 | $Id: CHtml.php 3515 2011-12-28 12:29:24Z mdomba $ |
源码 | framework/web/helpers/CHtml.php |
公共属性
隐藏继承属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
afterRequiredLabel | string | 加在必填项标签后面的HTML代码。 | CHtml |
beforeRequiredLabel | string | 加在必填项标签前面的HTML代码。 | CHtml |
count | integer | 产生自动输入栏位名称的计数器。 | CHtml |
errorCss | string | 高亮错误输出的CSS类。 如果有错误输入的话,表单输入控件将附加上这个CSS类。 | CHtml |
errorMessageCss | string | 显示错误消息的CSS类。(请参阅 error). | CHtml |
errorSummaryCss | string | 显示错误摘要的CSS类。(请参阅 errorSummary). | CHtml |
liveEvents | 设置附加jQuery的事件处理程序的默认样式。 | CHtml | |
requiredCss | string | 必填项标签的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
加在必填项标签前面的HTML代码。
参见
- label
产生自动输入栏位名称的计数器。
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
必填项标签的CSS类。默认为'required'。
参见
- label
方法详细
activeCheckBox() 方法public static string activeCheckBox(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
$model | CModel | 数据模型 |
$attribute | string | 属性 |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) 一个名为'uncheckValue'的选项是可用的, 当复选框没有被选中时可以返回这个选项的值。这个值默认为0。 在内部,一个隐藏域会被渲染,以便当复选框没有被选中时, 我们仍然能获取到未选中的值。 如果'uncheckValue'被设置为NULL,隐藏域将不会被渲染。 |
{return} | string | 生成的复选框 |
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
public static string activeCheckBoxList(CModel $model, string $attribute, array $data, array $htmlOptions=array ( )) | ||
$model | CModel | 数据模型 |
$attribute | string | 属性 |
$data | array | 用于生成复选框列表的值-标签对。 注意,值会被自动HTML编码,而标签不会。 |
$htmlOptions | array | 附加的HTML选项。 选项将会应用于每个复选框。下面指定的选项是被认可的:
|
{return} | string | 生成的复选框列表 |
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
public static string activeDropDownList(CModel $model, string $attribute, array $data, array $htmlOptions=array ( )) | ||
$model | CModel | 数据模型 |
$attribute | string | 属性 |
$data | array | 生成列表选项的数据(值=>显示) 你可以使用listData来生成这个数据。 请参阅listOptions来了解这个数据如何生成列表数据。 注意,这里的值个标签会自动被这个方法进行HTML编码。 |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) 此外,下面的这属性也被支持:
|
{return} | string | 生成的下拉列表 |
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
public static string activeFileField(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
$model | CModel | 数据模型 |
$attribute | string | 属性 |
$htmlOptions | array | 额外的HTML属性(请参阅tag). |
{return} | string | 生成的文件输入框 |
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
public static string activeHiddenField(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
$model | CModel | 数据模型 |
$attribute | string | 属性 |
$htmlOptions | array | 额外的HTML属性 |
{return} | string | 生成的隐藏域 |
publicstaticfunctionactiveHiddenField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
returnself::activeInputField('hidden',$model,$attribute,$htmlOptions);
}
为模型属性生成一个隐藏域。
参见
- activeInputField
public static string activeId(CModel $model, string $attribute) | ||
$model | CModel | 数据模型 |
$attribute | string | 属性 |
{return} | string | 生成的输入栏的ID |
publicstaticfunctionactiveId($model,$attribute)
{
returnself::getIdByName(self::activeName($model,$attribute));
}
为模型属性生成一个输入栏的ID。
activeInputField() 方法protected static string activeInputField(string $type, CModel $model, string $attribute, array $htmlOptions) | ||
$type | string | 输入类型(例如'text', 'radio') |
$model | CModel | 数据模型 |
$attribute | string | 属性 |
$htmlOptions | array | 输入标签的额外的HTML属性 |
{return} | string | 生成的输入标签 |
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 ( )) | ||
$model | CModel | 数据模型 |
$attribute | string | 属性 |
$htmlOptions | array | 额外的HTML属性。下面指定选项是被认可的:
|
{return} | string | 生成的label标签 |
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 ( )) | ||
$model | CModel | 数据模型 |
$attribute | string | 属性 |
$htmlOptions | array | 额外的HTML属性 |
{return} | string | 生成的label标签 |
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 ( )) | ||
$model | CModel | 数据模型 |
$attribute | string | 属性 |
$data | array | 生成列表选项的数据(值=>显示) 你可以使用listData来生成这个数据。 请参阅listOptions来了解这个数据如何生成列表数据。 注意,这里的值个标签会自动被这个方法进行HTML编码。 |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) 此外,下面的这属性也被支持:
|
{return} | string | 生成的列表框 |
publicstaticfunctionactiveListBox($model,$attribute,$data,$htmlOptions=array())
{
if(!isset($htmlOptions['size']))
$htmlOptions['size']=4;
returnself::activeDropDownList($model,$attribute,$data,$htmlOptions);
}
为一个模型属性生成一个列表框。 模型的属性值用来作为选项。 如果该属性有输入错误, 输入栏的CSS类会被附加上errorCss。
参见
- clientChange
- listData
public static string activeName(CModel $model, string $attribute) | ||
$model | CModel | 数据模型 |
$attribute | string | 属性 |
{return} | string | 生成的输入栏名称 |
publicstaticfunctionactiveName($model,$attribute)
{
$a=$attribute;//becausetheattributenamemaybechangedbyresolveName
returnself::resolveName($model,$a);
}
为一个模型属性生成输入栏名称。 不同于resolveName,这个方法不用修改属性名。
activePasswordField() 方法public static string activePasswordField(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
$model | CModel | 数据模型 |
$attribute | string | 属性 |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) |
{return} | string | 生成的密码输入框 |
publicstaticfunctionactivePasswordField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
self::clientChange('change',$htmlOptions);
returnself::activeInputField('password',$model,$attribute,$htmlOptions);
}
为一个模型属性生成一个密码输入框。 如果该属性有输入错误, 输入栏的CSS类将会被附加上errorCss。
参见
- clientChange
- activeInputField
public static string activeRadioButton(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
$model | CModel | 数据模型 |
$attribute | string | 属性 |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) 一个名为'uncheckValue'的选项是可用的, 当单选按钮没有被选中时可以返回这个选项的值。这个值默认为0。 在内部,一个隐藏域会被渲染,以便当单选按钮没有被选中时, 我们仍然能获取到未选中的值。 如果'uncheckValue'被设置为NULL,隐藏域将不会被渲染。 |
{return} | string | 生成的单选按钮 |
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
public static string activeRadioButtonList(CModel $model, string $attribute, array $data, array $htmlOptions=array ( )) | ||
$model | CModel | 数据模型 |
$attribute | string | 属性 |
$data | array | 用于生成单选按钮列表的值-标签对。 注意,值会被自动HTML编码,而标签不会。 |
$htmlOptions | array | 附加的HTML选项。 选项将会应用于每个单选按钮。下面指定的选项是被认可的:
|
{return} | string | 生成的单选按钮列表 |
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
public static string activeTextArea(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
$model | CModel | 数据模型 |
$attribute | string | 属性 |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) |
{return} | string | 生成的文本框 |
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
public static string activeTextField(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
$model | CModel | 数据模型 |
$attribute | string | 属性 |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) |
{return} | string | 生成的文本框 |
publicstaticfunctionactiveTextField($model,$attribute,$htmlOptions=array())
{
self::resolveNameID($model,$attribute,$htmlOptions);
self::clientChange('change',$htmlOptions);
returnself::activeInputField('text',$model,$attribute,$htmlOptions);
}
为模型属性生成一个文本框。 如果属性有输入错误, 输入框的CSS类将会附加上errorCss.
参见
- clientChange
- activeInputField
protected static void addErrorCss(array &$htmlOptions) | ||
$htmlOptions | array | 要被修改的HTML选项 |
protectedstaticfunctionaddErrorCss(&$htmlOptions)
{
if(isset($htmlOptions['class']))
$htmlOptions['class'].=''.self::$errorCss;
else
$htmlOptions['class']=self::$errorCss;
}
添加errorCss到'class'属性。
ajax() 方法public static string ajax(array $options) | ||
$options | array | AJAX选项。jQuery的AJAX文档中指定了有效的选项。 为了方便起见,下面指定的选项被添加:
|
{return} | string | 生成的JavaScript |
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
public static string ajaxButton(string $label, mixed $url, array $ajaxOptions=array ( ), array $htmlOptions=array ( )) | ||
$label | string | 按钮的标签 |
$url | mixed | AJAX请求的URL。如果是空,那就假定为当前的URL。更多详细情况请参见normalizeUrl。 |
$ajaxOptions | array | AJAX options (see ajax) |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) |
{return} | string | 生成的按钮 |
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 ( )) | ||
$text | string | 链接主体(不会被HTML编码) |
$url | mixed | AJAX请求的URL。如果是空,那就假定为当前的URL。更多详细信息请参见normalizeUrl。 |
$ajaxOptions | array | AJAX选项 (请参阅ajax) |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) |
{return} | string | 生成的链接 |
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
public static string ajaxSubmitButton(string $label, mixed $url, array $ajaxOptions=array ( ), array $htmlOptions=array ( )) | ||
$label | string | 按钮的标签 |
$url | mixed | AJAX请求的URL。如果是空,那就假定为当前的URL。更多详细信息请参见normalizeUrl。 |
$ajaxOptions | array | AJAX选项(请参阅ajax) |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) |
{return} | string | 生成的按钮 |
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) | ||
$path | string | 发布的资源路径 |
$hashByName | boolean | 公布的目录是否应该被命名为哈希文档名。 如果为false,该名称将是发布路径的哈希目录名。 默认为false。 如果想在不同扩展之间共享发布路径,那么就设置为true。 |
{return} | string | 公共资源的URL |
publicstaticfunctionasset($path,$hashByName=false)
{
returnYii::app()->getAssetManager()->publish($path,$hashByName);
}
生成公共资源的URL。
beginForm() 方法public static string beginForm(mixed $action='', string $method='post', array $htmlOptions=array ( )) | ||
$action | mixed | 表单的action链接(关于这个参数详见normalizeUrl。) |
$method | string | 表单方法(例如 post, get) |
$htmlOptions | array | 附加的HTML属性(请参阅tag)。 |
{return} | string | 生成的表单标签。 |
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
public static string button(string $label='button', array $htmlOptions=array ( )) | ||
$label | string | 按钮的标签 |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) |
{return} | string | 生成的按钮标签 |
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
public static string cdata(string $text) | ||
$text | string | 要被密封的字符串 |
{return} | string | 含有密封内容的CDATA标签。 |
publicstaticfunctioncdata($text)
{
return'<![CDATA['.$text.']]>';
}
将一个给定的字符串密封进一个CDATA标签中。
checkBox() 方法public static string checkBox(string $name, boolean $checked=false, array $htmlOptions=array ( )) | ||
$name | string | 复选框的名称 |
$checked | boolean | 复选框是否为被选中状态 |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) 自1.1.2版起,一个名称为‘uncheckValue’的特殊选项可以被使用, 这个特殊选项的值在当复选框没被选中时返回。 如果设置了这个特殊选项值,那么一个隐藏域会被渲染,以便当复选框没有被选中时,我们仍然可以获得一个未选中时的值。 如果‘uncheckValue’没有被设置或设置为NULL,隐藏域将不会被渲染。 |
{return} | string | 生成的复选框 |
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
public static string checkBoxList(string $name, mixed $select, array $data, array $htmlOptions=array ( )) | ||
$name | string | 复选框列表的名称。 一旦表单被提交,你可以就这个名称来获取选中的值。 |
$select | mixed | 复选框列表的选中项。 这个可以是一个单独的被选中项的字符串,也可以是多个选中项的数组。 |
$data | array | 用于生成复选框列表的值-标签对。 注意,值将自动被HTML编码,然而标签不会。 |
$htmlOptions | array | 附加的HTML选项。 选项将会应用于每个复选框上,下面这些特定的选项是被认可的:
|
{return} | string | 生成的复选框列表 |
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) | ||
$event | string | 事件名(不带'on') |
$htmlOptions | array | HTML属性,可能包含以下 特殊属性来指定客户端改变行为:
|
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) | ||
$tag | string | 标签名 |
{return} | string | 生成的HTML元素标签 |
publicstaticfunctioncloseTag($tag)
{
return'</'.$tag.'>';
}
生成一个HTML元素的结束标记
css() 方法public static string css(string $text, string $media='') | ||
$text | string | CSS内容 |
$media | string | 这个CSS适用于的media。 |
{return} | string | 密封好的CSS |
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='') | ||
$url | string | CSS的URL |
$media | string | CSS应用的media。 |
{return} | string | CSS链接 |
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) | ||
$text | string | 要被解码的数据 |
{return} | string | 解码后的数据 |
publicstaticfunctiondecode($text)
{
returnhtmlspecialchars_decode($text,ENT_QUOTES);
}
把特殊的HTML实体解码为相对应的字符。 这个和encode()是相反的功能。
参见
- http://www.php.net/manual/en/function.htmlspecialchars-decode.php
public static string dropDownList(string $name, string $select, array $data, array $htmlOptions=array ( )) | ||
$name | string | 下拉列表的名称 |
$select | string | 被选中的值 |
$data | array | 用来生成列表选项的数据(值=>显示). 你可以使用listData来生这个数据。 请参考listOptions来了解这个数据如何生成列表选项。 注意,这个方法会自动的将值和标签HTML编码。 |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) 此外,下面这些选项也被下拉列表所支持:
|
{return} | string | 生成的下拉列表 |
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
public static string encode(string $text) | ||
$text | string | 要被编码的数据 |
{return} | string | 编码后的数据 |
publicstaticfunctionencode($text)
{
returnhtmlspecialchars($text,ENT_QUOTES,Yii::app()->charset);
}
把特殊的字符编码为HTML实体。 application charset将被用于编码。
参见
- http://www.php.net/manual/en/function.htmlspecialchars.php
public static array encodeArray(array $data) | ||
$data | array | 要被编码的数据 |
{return} | array | 编码后的数据 |
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
public static string endForm() | ||
{return} | string | 生成的标签 |
publicstaticfunctionendForm()
{
return'</form>';
}
生成一个表单的结束标签。
参见
- beginForm
public static 数据显示字符串。如果没有发现错误则为空。 error(CModel $model, string $attribute, array $htmlOptions=array ( )) | ||
$model | CModel | 数据模型 |
$attribute | string | 属性名 |
$htmlOptions | array | 额外的被渲染到div容器的HTML属性。 |
{return} | 数据显示字符串。如果没有发现错误则为空。 |
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
public static string errorSummary(mixed $model, string $header=NULL, string $footer=NULL, array $htmlOptions=array ( )) | ||
$model | mixed | 输入错误要被显示的模型。 可以是一个单独的模型,也可以是一个模型的数组。 |
$header | string | 出现在错误前面的一段HTML代码 |
$footer | string | 出现在错误后面的一段HTML代码 |
$htmlOptions | array | 额外的被渲染到div容器的HTML属性。 一个名为'firstError'的属性是被认可的,当设置为true, 将只显示每个属性的第一个错误信息。 如果不设置或设置为false,所有的错误信息都将会显示。 这个选项自1.1.3版可用。 |
{return} | string | 错误摘要。如果没有错误被找到则为空。 |
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
public static string fileField(string $name, string $value='', array $htmlOptions=array ( )) | ||
$name | string | 输入框的名称 |
$value | string | 输入框的值 |
$htmlOptions | array | 附加的HTML属性(请参阅tag). |
{return} | string | 生成的文件输入框 |
publicstaticfunctionfileField($name,$value='',$htmlOptions=array())
{
returnself::inputField('file',$name,$value,$htmlOptions);
}
生成一个文件输入框。 注意,你必须设置表单的‘enctype’属性为‘multipart/form-data’。 表单被提交后,上传的文件信息可以通过$_FILES[$name]来获得 (请参阅 PHP documentation).
参见
- inputField
public static string form(mixed $action='', string $method='post', array $htmlOptions=array ( )) | ||
$action | mixed | 表单的action链接(关于这个参数详见normalizeUrl。) |
$method | string | 表单方法(例如 post, get) |
$htmlOptions | array | 附加的HTML属性(请参阅tag)。 |
{return} | string | 生成的表单标签。 |
publicstaticfunctionform($action='',$method='post',$htmlOptions=array())
{
returnself::beginForm($action,$method,$htmlOptions);
}
生成一个表单的开始标签。 这是beginForm的一个捷径。
getIdByName() 方法public static string getIdByName(string $name) | ||
$name | string | 用来生成HTML ID的名称 |
{return} | string | 根据名称生成的ID。 |
publicstaticfunctiongetIdByName($name)
{
returnstr_replace(array('[]','][','[',']'),array('','_','_',''),$name);
}
根据名称来生成一个有效的HTML ID。
hiddenField() 方法public static string hiddenField(string $name, string $value='', array $htmlOptions=array ( )) | ||
$name | string | 输入框的名称 |
$value | string | 输入框的值 |
$htmlOptions | array | 附加的HTML属性(请参阅tag). |
{return} | string | 生成的隐藏输入框 |
publicstaticfunctionhiddenField($name,$value='',$htmlOptions=array())
{
returnself::inputField('hidden',$name,$value,$htmlOptions);
}
生成一个隐藏的输入框
参见
- inputField
public static string htmlButton(string $label='button', array $htmlOptions=array ( )) | ||
$label | string | 按钮的标签。 注意,这个值将会直接的插入到按钮元素中,不经过编码处理。 |
$htmlOptions | array | additional 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) |
{return} | string | 生成的按钮标签 |
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
public static string image(string $src, string $alt='', array $htmlOptions=array ( )) | ||
$src | string | 图片的URL |
$alt | string | 替代的文字显示 |
$htmlOptions | array | 附加的HTML属性(请参阅tag). |
{return} | string | 生成的图片标签 |
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 ( )) | ||
$src | string | 图片的URL |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) |
{return} | string | 生成的按钮标签 |
publicstaticfunctionimageButton($src,$htmlOptions=array())
{
$htmlOptions['src']=$src;
$htmlOptions['type']='image';
returnself::button('submit',$htmlOptions);
}
生成一个图片提交按钮。
参见
- clientChange
protected static string inputField(string $type, string $name, string $value, array $htmlOptions) | ||
$type | string | input标签类型(例如 'text', 'radio') |
$name | string | input标签名称 |
$value | string | input标签值 |
$htmlOptions | array | 额外的HTML标签的属性(请参阅tag). |
{return} | string | 生成的input标签 |
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 ( )) | ||
$label | string | 标签文本。注意,如果需要的话,你应该把文本HTML编码。 |
$for | string | 和这个标签有关的HTML元素的ID。 如果是false,标签的‘for’属性将不会被渲染。 |
$htmlOptions | array | 附加的HTML属性。 下面的HTML选项是被认可的:
|
{return} | string | 生成的label标签 |
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 ( )) | ||
$text | string | 链接主体。它不会被编码。因此,如图像标签那样的HTML代码也会被通过。 |
$url | mixed | 一个URL或一个路由动作,用于创建一个URL。 关于如何指定这个参数的更多详细情况请参阅normalizeUrl。 |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) |
{return} | string | 生成的超链接 |
publicstaticfunctionlink($text,$url='#',$htmlOptions=array())
{
if($url!=='')
$htmlOptions['href']=self::normalizeUrl($url);
self::clientChange('click',$htmlOptions);
returnself::tag('a',$htmlOptions,$text);
}
生成一个超链接。
参见
- normalizeUrl
- clientChange
public static string linkButton(string $label='submit', array $htmlOptions=array ( )) | ||
$label | string | 按钮的标签 |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) |
{return} | string | 生成的按钮标签 |
publicstaticfunctionlinkButton($label='submit',$htmlOptions=array())
{
if(!isset($htmlOptions['submit']))
$htmlOptions['submit']=isset($htmlOptions['href'])?$htmlOptions['href']:'';
returnself::link($label,'#',$htmlOptions);
}
生成一个链接提交按钮。
参见
- clientChange
public static string linkTag(string $relation=NULL, string $type=NULL, string $href=NULL, string $media=NULL, array $options=array ( )) | ||
$relation | string | link标签的rel属性。如果是null,属性将不会被生成。 |
$type | string | link标签的type属性。如果是null,属性将不会被生成。 |
$href | string | link标签的href属性。如果是null,属性将不会被生成。 |
$media | string | link标签的media属性。如果是null,属性将不会被生成。 |
$options | array | 其它选项的名称-值对 |
{return} | string | 生成的link标签 |
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 ( )) | ||
$name | string | 列表框的名称 |
$select | mixed | 被选中的值。这个可以是一个单独的被选中项的字符串,也可以是多个选中项的数组。 |
$data | array | 用于生成列表选项的数据(值=>显示) 你可以使用listData来生这个数据。 请参考listOptions来了解这个数据如何生成列表选项。 注意,这个方法会自动的将值和标签HTML编码。 |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) 此外,下面这些选项也被下拉列表所支持:
|
{return} | string | 生成的列表框 |
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
public static array listData(array $models, string $valueField, string $textField, string $groupField='') | ||
$models | array | 模型对象的列表。 这个参数也可以是一个关联的数组(例如CDbCommand::queryAll的结果)。 |
$valueField | string | 列表选项值的属性名 |
$textField | string | 列表选项文本的属性名 |
$groupField | string | 列表选项组的属性名。如果是空,将不会生成组。 |
{return} | array | 可用于dropDownList, listBox等的列表数据。 |
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) | ||
$selection | mixed | 被选中的值。这个可以是一个单独的被选中项的字符串,也可以是多个选中项的数组。 |
$listData | array | 选项数据(请参阅listData) |
$htmlOptions | array | 额外的HTML属性。下面两个特定的属性是被认可:
|
{return} | string | 生成的列表选项 |
publicstaticfunctionlistOptions($selection,$listData,&$htmlOptions)
{
$raw=isset($htmlOptions['encode'])&&!$htmlOptions['encode'];
$content='';
if(isset($htmlOptions['prompt']))
{
$content.='<optionvalue="">'.strtr($htmlOptions['prompt'],array('<'=>'<','>'=>'>'))."</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('<'=>'<','>'=>'>'))."</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 ( )) | ||
$text | string | 链接主体。它不会被编码。因此,如图像标签那样的HTML代码也会被通过。 |
string | email地址。如果是空,第一个参数(链接主体)将被作为email地址。 | |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) |
{return} | string | the 生成的电子邮件链接 |
publicstaticfunctionmailto($text,$email='',$htmlOptions=array())
{
if($email==='')
$email=$text;
returnself::link($text,'mailto:'.$email,$htmlOptions);
}
创建一个电子邮件链接。
参见
- clientChange
public static string metaTag(string $content, string $name=NULL, string $httpEquiv=NULL, array $options=array ( )) | ||
$content | string | meta标签的内容属性 |
$name | string | meta标签的属性名。如果是null,属性将不会被生成 |
$httpEquiv | string | meta标签的http-equiv属性。如果是null,属性将不会被生成 |
$options | array | 其它选项的名称-值对(例如 'scheme', 'lang') |
{return} | string | 生成的meta标签 |
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) | ||
$url | mixed | 生成一个有效的URL的参数 |
{return} | string | 有效的URL |
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
.
public static string openTag(string $tag, array $htmlOptions=array ( )) | ||
$tag | string | 标签名 |
$htmlOptions | array | 元素的属性。属性值将被encode()HTML编码。 如果给了一个'encode'属性,而且属性值为false的话, 其余的属性值将不会被HTML编码。 自1.1.5起,属性值为null的属性将不会被渲染。 |
{return} | string | 生成的HTML元素标签 |
publicstaticfunctionopenTag($tag,$htmlOptions=array())
{
return'<'.$tag.self::renderAttributes($htmlOptions).'>';
}
生成一个HTML元素的开始标签。
pageStateField() 方法public static string pageStateField(string $value) | ||
$value | string | 序列化的持久状态 |
{return} | string | 生成的隐藏域 |
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 ( )) | ||
$name | string | 输入框的名称 |
$value | string | 输入框的值 |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) |
{return} | string | 生成的密码输入框 |
publicstaticfunctionpasswordField($name,$value='',$htmlOptions=array())
{
self::clientChange('change',$htmlOptions);
returnself::inputField('password',$name,$value,$htmlOptions);
}
生成一个密码输入框。
参见
- clientChange
- inputField
public static string radioButton(string $name, boolean $checked=false, array $htmlOptions=array ( )) | ||
$name | string | 按钮的名称 |
$checked | boolean | 单选按钮是否被选中状态 |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) 自1.1.2版起,一个名称为‘uncheckValue’的特殊选项可以被使用, 这个特殊选项的值在当单选按钮没有被选中时返回。 如果设置了这个特殊选项值,那么一个隐藏域会被渲染,以便当单选按钮没有被选中时,我们仍然可以获得一个未选中时的值。 如果‘uncheckValue’没有被设置或设置为NULL,隐藏域将不会被渲染。 |
{return} | string | 生成的单选按钮 |
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
public static string radioButtonList(string $name, string $select, array $data, array $htmlOptions=array ( )) | ||
$name | string | 单选按钮列表的名称。 一旦表单被提交,你可以使用这个名称来获取被选中的值。 |
$select | string | 被选中的单选按钮。 |
$data | array | 用于生成单选按钮列表的值-标签对。 注意,值将自动被HTML编码,然而标签不会。 |
$htmlOptions | array | 附加的HTML选项。 选项将会应用于每个单选按钮上,下面这些特定的选项是被认可的:
|
{return} | string | 生成的单选按钮列表 |
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='') | ||
$seconds | integer | 刷新页面前等待的秒数 |
$url | string | 要跳转的URL,如果是空,意味着当前页。 |
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) | ||
$htmlOptions | array | 将被渲染的属性 |
{return} | string | 渲染结果 |
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 ( )) | ||
$label | string | 按钮的标签 |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) |
{return} | string | 生成的按钮标签 |
publicstaticfunctionresetButton($label='reset',$htmlOptions=array())
{
$htmlOptions['type']='reset';
returnself::button($label,$htmlOptions);
}
生成一个重置按钮。
参见
- clientChange
public static string resolveName(CModel $model, string &$attribute) | ||
$model | CModel | 数据模型 |
$attribute | string | 属性 |
{return} | string | 输入标签的名称 |
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) | ||
$model | CModel | 数据模型 |
$attribute | string | 属性 |
$htmlOptions | array | HTML选项 |
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) | ||
$model | CModel | 数据模型 |
$attribute | string | 属性名 |
{return} | mixed | 属性值 |
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) | ||
$text | string | 将被密封的Javascript |
{return} | string | 密封好的Javascript |
publicstaticfunctionscript($text)
{
return"<scripttype="text/javascript">n/*<![CDATA[*/n{$text}n/*]]>*/n</script>";
}
将给定的Javascript密封到一个script标签中。
scriptFile() 方法public static string scriptFile(string $url) | ||
$url | string | JavaScript文件的URL |
{return} | string | JavaScript文件标签 |
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 ( )) | ||
$action | mixed | 表单的action链接(关于这个参数详见normalizeUrl。) |
$method | string | 表单方法(例如 post, get) |
$htmlOptions | array | 附加的HTML属性(请参阅tag)。 |
{return} | string | 生成的表单标签。 |
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 ( )) | ||
$label | string | 按钮的标签 |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) |
{return} | string | 生成的按钮标签 |
publicstaticfunctionsubmitButton($label='submit',$htmlOptions=array())
{
$htmlOptions['type']='submit';
returnself::button($label,$htmlOptions);
}
生成一个提交按钮。
参见
- clientChange
public static string tag(string $tag, array $htmlOptions=array ( ), mixed $content=false, boolean $closeTag=true) | ||
$tag | string | 标签名 |
$htmlOptions | array | 元素的属性。属性值将被encode()HTML编码。 如果给了一个'encode'属性,而且属性值为false的话, 其余的属性值将不会被HTML编码。 自1.1.5起,属性值为null的属性将不会被渲染。 |
$content | mixed | 被附加在开启和闭合的元素标记之间的内容。它不会被HTML编码。 如果是false,意味着没有主体内容。 |
$closeTag | boolean | 是否生成结束标记。 |
{return} | string | 生成的HTML元素标签 |
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 ( )) | ||
$name | string | 文本框的名称 |
$value | string | 文本框的值 |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) |
{return} | string | 生成的文本框 |
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
public static string textField(string $name, string $value='', array $htmlOptions=array ( )) | ||
$name | string | 输入框的名称 |
$value | string | 输入框的值 |
$htmlOptions | array | 附加的HTML属性。除了正常的HTML属性外, 一些特殊的属性也是可以的(请参阅clientChange和tag来了解更多详细信息。) |
{return} | string | 生成的文本输入框 |
publicstaticfunctiontextField($name,$value='',$htmlOptions=array())
{
self::clientChange('change',$htmlOptions);
returnself::inputField('text',$name,$value,$htmlOptions);
}
生成一个文本输入框。
参见
- clientChange
- inputField
public static mixed value(mixed $model, string $attribute, mixed $defaultValue=NULL) | ||
$model | mixed | 模型。可以是一个对象也可以是一个数组。 |
$attribute | string | 属性名(用点连接的多重属性) |
$defaultValue | mixed | 当属性不存在时返回的默认值 |
{return} | mixed | n属性值 |
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']"。