包 | 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 |
公共方法
方法 | 描述 | 定义在 |
---|---|---|
__call() | 如果类中没有调的方法名,则调用这个方法。 | CComponent |
__construct() | 构造器。 | CFormElement |
__get() | 返回属性值。 | CFormElement |
__isset() | 检查一个属性是否为null。 | CComponent |
__set() | 设置属性值。 | CFormElement |
__toString() | 将对象转换为字符串。 | CFormElement |
__unset() | 设置一个组件的属性为null。 | CComponent |
asa() | 返回这个名字的行为对象。 | CComponent |
attachBehavior() | 附加一个行为到组件。 | CComponent |
attachBehaviors() | 附加一个行为列表到组件。 | CComponent |
attachEventHandler() | 为事件附加一个事件处理程序。 | CComponent |
canGetProperty() | 确定属性是否可读。 | CComponent |
canSetProperty() | 确定属性是否可写。 | CComponent |
configure() | 根据初始化的值来配置这个对象。 | CFormElement |
detachBehavior() | 从组件中分离一个行为。 | CComponent |
detachBehaviors() | 从组件中分离所有行为。 | CComponent |
detachEventHandler() | 分离一个存在的事件处理程序。 | CComponent |
disableBehavior() | 禁用一个附加行为。 | CComponent |
disableBehaviors() | 禁用组件附加的所有行为。 | CComponent |
enableBehavior() | 启用一个附加行为。 | CComponent |
enableBehaviors() | 启用组件附加的所有行为。 | CComponent |
evaLuateExpression() | 计算一个PHP表达式,或根据组件上下文执行回调。 | CComponent |
getEventHandlers() | 返回一个事件的附加处理程序列表。 | CComponent |
getOn() | 返回值表明这个按钮在哪些场景中是可见的。 | CFormButtonElement |
getParent() | 返回这个元素的真系父类。它可能是CForm对象,也可能是CBaseController对象。 (控制器或挂件)。 | CFormElement |
getVisible() | 返回值说明这个元素是否可见并需要渲染。 | CFormElement |
hasEvent() | 确定一个事件是否定义。 | CComponent |
hasEventHandler() | 检查事件是否有附加的处理程序。 | CComponent |
hasProperty() | 确定属性是否被定义。 | CComponent |
raiseEvent() | 发起一个事件。 | CComponent |
render() | 返回这个按钮。 | CFormButtonElement |
setOn() | 设置逗号分隔的场景名。 | CFormButtonElement |
setVisible() | 设置这个元素是否可见并需要渲染。 | CFormElement |
受保护方法
方法 | 描述 | 定义在 |
---|---|---|
evaluateVisible() | 评估这个元素是否可见。 | CFormButtonElement |
属性详细
coreTypes
属性
public static 核心按钮类型(别名=>CHtml方法名) $coreTypes;
label
属性
public string $label;
按钮的标签. 当按钮是一个挂件生成时,这个属性被忽略。
name
属性
public string $name;
按钮的名称
on
属性
public string getOn()
public void setOn(string $value)
public void setOn(string $value)
返回值表明这个按钮在哪些场景中是可见的。 如果这个值为空,意味着按钮在所有的场景中可见。 否则,只有当在场景中的模型名在这个值中能找到时, 按钮是可见的。 查看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);
}