包 | system.web.form |
---|---|
继承 | class CFormButtonElement » CFormElement » CComponent |
源自 | 1.1 |
版本 | $Id: CFormButtonElement.php 3426 2011-10-25 00:01:09Z alexander.makarow $ |
源码 |
CFormButtonElement 代表一个表单按钮元素。
CFormButtonElement 能代表如下基于type属性按钮的类型:
因为CFormElement是CFormButtonElement的一个祖先类, 一个值指派给一个不存在的属性将被存储在attributes中, 然后作为一个HTML属性传递给CHtml方法来生成按钮或初始化挂件属性。
CFormButtonElement 能代表如下基于type属性按钮的类型:
- htmlButton: 一个由CHtml::htmlButton生成的正常的按钮
- htmlReset 一个由CHtml::htmlButton生成的重置按钮
- htmlSubmit: 一个由CHtml::htmlButton生成的提交按钮
- submit: 一个由CHtml::submitButton生成的提交按钮
- button: 一个由CHtml::button生成的正常的按钮
- image: 一个由CHtml::imageButton生成的图片按钮
- reset: 一个由CHtml::resetButton生成的重置按钮
- link: 一个由CHtml::linkButton生成的链接按钮
因为CFormElement是CFormButtonElement的一个祖先类, 一个值指派给一个不存在的属性将被存储在attributes中, 然后作为一个HTML属性传递给CHtml方法来生成按钮或初始化挂件属性。
公共属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
attributes | array | 通过这个对象来表现HTML元素的属性列表(name=>value)。 | CFormElement |
coreTypes | 核心按钮类型(别名=>CHtml方法名) | CFormButtonElement | |
label | string | 按钮的标签. | CFormButtonElement |
name | string | 按钮的名称 | CFormButtonElement |
on | string | 返回值表明这个按钮在哪些场景中是可见的。 | CFormButtonElement |
parent | mixed | 这个元素的真系父类。它可能是CForm对象,也可能是CBaseController对象。 (控制器或挂件)。 | CFormElement |
type | string | 按钮的类型。它可以是一个类名,可以是一个类名的路径别名, 也可以是一个按钮类型别名(submit, button, image, reset, link, htmlButton, htmlSubmit, htmlReset). | CFormButtonElement |
visible | boolean | 返回值说明这个元素是否可见并需要渲染。 | CFormElement |
公共方法
受保护方法
方法 | 描述 | 定义在 |
---|---|---|
evaluateVisible() | 评估这个元素是否可见。 | CFormButtonElement |
属性详细
coreTypes
属性
public static 核心按钮类型(别名=>CHtml方法名) $coreTypes;
label
属性
public string $label;
按钮的标签. 当按钮是一个挂件生成时,这个属性被忽略。
name
属性
public string $name;
按钮的名称
on
属性
返回值表明这个按钮在哪些场景中是可见的。 如果这个值为空,意味着按钮在所有的场景中可见。 否则,只有当在场景中的模型名在这个值中能找到时, 按钮是可见的。 查看CModel::scenario来了解更多关于模型场景的信息。
type
属性
public string $type;
按钮的类型。它可以是一个类名,可以是一个类名的路径别名, 也可以是一个按钮类型别名(submit, button, image, reset, link, htmlButton, htmlSubmit, htmlReset).
方法详细
evaluateVisible()
方法
protected boolean evaluateVisible()
| ||
{return} | boolean | 元素是否可见。 |
protected function evaluateVisible()
{
return empty($this->_on) || in_array($this->getParent()->getModel()->getScenario(),$this->_on);
}
评估这个元素是否可见。 这个方法将检查on属性来确定 如果模型在场景中那么应该字符串显示。
getOn()
方法
public string getOn()
| ||
{return} | string | 逗号分隔的场景名。默认为null。 |
public function getOn()
{
return $this->_on;
}
返回值表明这个按钮在哪些场景中是可见的。 如果这个值为空,意味着按钮在所有的场景中可见。 否则,只有当在场景中的模型名在这个值中能找到时, 按钮是可见的。 查看CModel::scenario来了解更多关于模型场景的信息。
render()
方法
public string render()
| ||
{return} | string | 渲染结果 |
public function render()
{
$attributes=$this->attributes;
if(isset(self::$coreTypes[$this->type]))
{
$method=self::$coreTypes[$this->type];
if($method==='linkButton')
{
if(!isset($attributes['params'][$this->name]))
$attributes['params'][$this->name]=1;
}
else if($method==='htmlButton')
{
$attributes['type']=$this->type==='htmlSubmit' ? 'submit' : ($this->type==='htmlReset' ? 'reset' : 'button');
$attributes['name']=$this->name;
}
else
$attributes['name']=$this->name;
if($method==='imageButton')
return CHtml::imageButton(isset($attributes['src']) ? $attributes['src'] : '',$attributes);
else
return CHtml::$method($this->label,$attributes);
}
else
{
$attributes['name']=$this->name;
ob_start();
$this->getParent()->getOwner()->widget($this->type, $attributes);
return ob_get_clean();
}
}
返回这个按钮。
setOn()
方法
public void setOn(string $value)
| ||
$value | string | 逗号分隔的场景名。 |
public function setOn($value)
{
$this->_on=preg_split('/[\s,]+/',$value,-1,PREG_SPLIT_NO_EMPTY);
}