CMultiFileUpload

优质
小牛编辑
130浏览
2023-12-01
所有包 | 属性 | 方法
system.web.widgets
继承class CMultiFileUpload » CInputWidget » CWidget » CBaseController » CComponent
源自1.0
版本$Id: CMultiFileUpload.php 3515 2011-12-28 12:29:24Z mdomba $
源码framework/web/widgets/CMultiFileUpload.php
CMultiFileUpload 生成一个允许同时上传多个文件的文件输入域。

这个类基于jQuery Multi File Upload plugin。 已上传的文件消息可以通过$_FILES[widget-name]访问,这个变量返回一个已上传文件组成的数组。 注意:你必须设置包含此字段的表单的“enctype”属性值为“multipart/form-data”。

示例:
<?php$this->widget('CMultiFileUpload', array(   'model'=>$model,   'attribute'=>'files',   'accept'=>'jpg|gif',   'options'=>array(      'onFileSelect'=>'function(e, v, m){ alert("onFileSelect - "+v) }',      'afterFileSelect'=>'function(e, v, m){ alert("afterFileSelect - "+v) }',      'onFileAppend'=>'function(e, v, m){ alert("onFileAppend - "+v) }',      'afterFileAppend'=>'function(e, v, m){ alert("afterFileAppend - "+v) }',      'onFileRemove'=>'function(e, v, m){ alert("onFileRemove - "+v) }',      'afterFileRemove'=>'function(e, v, m){ alert("afterFileRemove - "+v) }',   ),));
?>

公共属性

隐藏继承属性

属性类型描述定义在
acceptstringthe 允许上传的文件类型 (例如 "gif|jpg")。 注意:仍然需要在服务器端检测上传的文件类型是否被允许。CMultiFileUpload
actionPrefixstringactions的ID的前缀。 当微件在CController::actions中声明了 动作提供者,可以为其动作的ID指定前缀以区别 于别的微件或控制器。当微件用于控制器 的视图中时,必须配置同样的前缀。CWidget
attributestringthe 与此小物件相关联的属性。 这个名字可以包含方括号 (e.CInputWidget
controllerCController返回此微件所属的控制器。CWidget
deniedstring当上传文件的类型不允许时显示的消息。CMultiFileUpload
duplicatestring一个文件被选中两次时显示的消息。CMultiFileUpload
filestring用于显示已上传文件名的消息模板。CMultiFileUpload
htmlOptionsarray渲染输入标签时附加的HTML选项CInputWidget
idstring返回此微件的ID。如果需要的话,将生产一个新的ID并将其返回。CWidget
maxinteger可上传的最大文件数。如果设置为-1,表示不受限制。默认值是-1。CMultiFileUpload
modelCModel与此小物件相关联的数据模型。CInputWidget
namestring输入控件的名字。如果model没有设置,则必须设置此属性。CInputWidget
optionsarrayadditional options that can be passed to the constructor of the multifile js object.CMultiFileUpload
ownerCBaseController返回此微件的所有者或创建者。CWidget
removestring移除按钮的标签。默认值是“Remove”。CMultiFileUpload
selectedstring一个文件被选择时显示的消息。CMultiFileUpload
skinmixed微件使用的皮肤的名称。默认为“default”。 如果此属性设置为false,微件将不会有皮肤被使用。CWidget
valuestring输入控件的值CInputWidget
viewPathstring返回包含此微件所需的视图文件的路径。CWidget

受保护属性

隐藏继承属性

属性类型描述定义在
clientOptionsarrayJavaScript选项CMultiFileUpload

公共方法

隐藏继承方法

方法描述定义在
__call()如果类中没有调的方法名,则调用这个方法。CComponent
__construct()构造器。CWidget
__get()返回一个属性值、一个事件处理程序列表或一个行为名称。CComponent
__isset()检查一个属性是否为null。CComponent
__set()设置一个组件的属性值。CComponent
__unset()设置一个组件的属性为null。CComponent
actions()返回此widget使用的动作的列表。CWidget
asa()返回这个名字的行为对象。CComponent
attachBehavior()附加一个行为到组件。CComponent
attachBehaviors()附加一个行为列表到组件。CComponent
attachEventHandler()为事件附加一个事件处理程序。CComponent
beginCache()Begins fragment caching.CBaseController
beginClip()Begins recording a clip.CBaseController
beginContent()Begins the rendering of content that is to be decorated by the specified view.CBaseController
beginWidget()Creates a widget and executes it.CBaseController
canGetProperty()确定属性是否可读。CComponent
canSetProperty()确定属性是否可写。CComponent
createWidget()Creates a widget and initializes it.CBaseController
detachBehavior()从组件中分离一个行为。CComponent
detachBehaviors()从组件中分离所有行为。CComponent
detachEventHandler()分离一个存在的事件处理程序。CComponent
disableBehavior()禁用一个附加行为。CComponent
disableBehaviors()禁用组件附加的所有行为。CComponent
enableBehavior()启用一个附加行为。CComponent
enableBehaviors()启用组件附加的所有行为。CComponent
endCache()Ends fragment caching.CBaseController
endClip()Ends recording a clip.CBaseController
endContent()Ends the rendering of content.CBaseController
endWidget()Ends the execution of the named widget.CBaseController
evaluateExpression()计算一个PHP表达式,或根据组件上下文执行回调。CComponent
getController()返回此微件所属的控制器。CWidget
getEventHandlers()返回一个事件的附加处理程序列表。CComponent
getId()返回此微件的ID。如果需要的话,将生产一个新的ID并将其返回。CWidget
getOwner()返回此微件的所有者或创建者。CWidget
getViewFile()根据视图名查找视图文件。CWidget
getViewPath()返回包含此微件所需的视图文件的路径。CWidget
hasEvent()确定一个事件是否定义。CComponent
hasEventHandler()检查事件是否有附加的处理程序。CComponent
hasProperty()确定属性是否被定义。CComponent
init()初始化此微件。CWidget
raiseEvent()发起一个事件。CComponent
registerClientScript()注册必须的CSS和JavaScript。CMultiFileUpload
render()渲染一个视图。CWidget
renderFile()Renders a view file.CBaseController
renderInternal()Renders a view file.CBaseController
run()运行此小物件。CMultiFileUpload
setId()设置此微件的ID。CWidget
widget()Creates a widget and executes it.CBaseController

受保护方法

隐藏继承方法

方法描述定义在
getClientOptions()返回JavaScript选项CMultiFileUpload
hasModel()确定此小物件是否与一个数据模型相关联。CInputWidget
resolveNameID()CInputWidget

属性详细

accept 属性 public string $accept;

the 允许上传的文件类型 (例如 "gif|jpg")。 注意:仍然需要在服务器端检测上传的文件类型是否被允许。

clientOptions 属性 只读 protected array getClientOptions()

JavaScript选项

denied 属性 public string $denied;

当上传文件的类型不允许时显示的消息。

duplicate 属性 public string $duplicate;

一个文件被选中两次时显示的消息。

file 属性 (可用自 v1.1.3) public string $file;

用于显示已上传文件名的消息模板。

max 属性 public integer $max;

可上传的最大文件数。如果设置为-1,表示不受限制。默认值是-1。

options 属性 (可用自 v1.1.7) public array $options;

additional options that can be passed to the constructor of the multifile js object.

remove 属性 public string $remove;

移除按钮的标签。默认值是“Remove”。

selected 属性 public string $selected;

一个文件被选择时显示的消息。

方法详细

getClientOptions() 方法
protected array getClientOptions()
{return}arrayJavaScript选项
源码: framework/web/widgets/CMultiFileUpload.php#117 (显示) protectedfunctiongetClientOptions()
{
$options=$this->options;
foreach(array('onFileRemove','afterFileRemove','onFileAppend','afterFileAppend','onFileSelect','afterFileSelect')as$event)
{
if(isset($options[$event])&&strpos($options[$event],'js:')!==0)
$options[$event]='js:'.$options[$event];
}

if($this->accept!==null)
$options['accept']=$this->accept;
if($this->max>0)
$options['max']=$this->max;

$messages=array();
foreach(array('remove','denied','selected','duplicate','file')as$messageName)
{
if($this->$messageName!==null)
$messages[$messageName]=$this->$messageName;
}
if($messages!==array())
$options['STRING']=$messages;

return$options;
}
registerClientScript() 方法
public void registerClientScript()
源码: framework/web/widgets/CMultiFileUpload.php#102 (显示) publicfunctionregisterClientScript()
{
$id=$this->htmlOptions['id'];

$options=$this->getClientOptions();
$options=$options===array()?'':CJavaScript::encode($options);

$cs=Yii::app()->getClientScript();
$cs->registerCoreScript('multifile');
$cs->registerScript('Yii.CMultiFileUpload#'.$id,"jQuery("#{$id}").MultiFile({$options});");
}

注册必须的CSS和JavaScript。

run() 方法
public void run()
源码: framework/web/widgets/CMultiFileUpload.php#86 (显示) publicfunctionrun()
{
list($name,$id)=$this->resolveNameID();
if(substr($name,-2)!=='[]')
$name.='[]';
if(isset($this->htmlOptions['id']))
$id=$this->htmlOptions['id'];
else
$this->htmlOptions['id']=$id;
$this->registerClientScript();
echoCHtml::fileField($name,'',$this->htmlOptions);
}

运行此小物件。 此方法注册所有必须的客户端脚本,渲染 多文件上传控件。