Spec-Zone.ru › Yii 1.1

CMultiFileUpload

Пакет system.web.widgets
Наследование class CMultiFileUpload » CInputWidget » CWidget » CBaseController » CComponent
С момента 1.0
Исходный код framework/web/widgets/CMultiFileUpload.php
CMultiFileUpload генерирует элемент ввода файла, который позволяет загружать несколько файлов одновременно.

Основано на плагине jQuery Multi File Upload. Информация о загруженных файлах доступна через $_FILES[имя-виджета], которая представляет собой массив загруженных файлов. Обратите внимание, что необходимо установить атрибут 'enctype' в enclosing форме в '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) }',
     ),
  ));
?>

Общедоступные свойства

Свойство Тип Описание Определено
accept строка типы файлов, которые разрешены (например, "gif|jpg"). CMultiFileUpload
actionPrefix строка префикс к идентификаторам действий. CWidget
attribute строка атрибут, связанный с этим виджетом. CInputWidget
controller CController Возвращает контроллер, к которому принадлежит этот виджет. CWidget
denied строка сообщение, отображаемое, когда тип файла не разрешен. CMultiFileUpload
duplicate строка сообщение, отображаемое, когда файл появляется дважды. CMultiFileUpload
file строка шаблон сообщения для отображения имени загруженного файла CMultiFileUpload
htmlOptions массив дополнительные HTML-параметры, которые будут отображаться в теге ввода CInputWidget
id строка Возвращает ID виджета или генерирует новый, если запрошено. CWidget
max целое число максимальное количество файлов, которые можно загрузить. CMultiFileUpload
model CModel модель данных, связанная с этим виджетом. CInputWidget
name строка имя элемента ввода. CInputWidget
options массив дополнительные параметры, которые могут быть переданы в конструктор объекта multifile js. CMultiFileUpload
owner CBaseController Возвращает владельца/создателя этого виджета. CWidget
remove строка метка для кнопки удаления. CMultiFileUpload
selected строка сообщение, отображаемое при выборе файла. CMultiFileUpload
skin смешанное имя скина, которое будет использоваться этим виджетом. CWidget
value строка значение элемента ввода CInputWidget
viewPath строка Возвращает директорию, содержащую файлы представлений для этого виджета. CWidget

Защищенные свойства

Свойство Тип Описание Определено
clientOptions массив параметры javascript CMultiFileUpload

Общедоступные методы

Метод Описание Определено в
__call() Вызывает именованный метод, который не является методом класса. CComponent
__construct() Конструктор. CWidget
__get() Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. CComponent
__isset() Проверяет, является ли значение свойства нулевым. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__unset() Устанавливает свойство компонента в значение null. CComponent
actions() Возвращает список действий, используемых этим виджетом. CWidget
asa() Возвращает объект поведения с заданным именем. CComponent
attachBehavior() Присоединяет поведение к данному компоненту. CComponent
attachBehaviors() Присоединяет список поведений к компоненту. CComponent
attachEventHandler() Присоединяет обработчик событий к событию. CComponent
beginCache() Начинает кэширование фрагмента. CBaseController
beginClip() Начинает запись клипа. CBaseController
beginContent() Начинает отображение содержимого, которое должно быть отформатировано указанным представлением. CBaseController
beginWidget() Создает виджет и выполняет его. CBaseController
canGetProperty() Определяет, можно ли прочитать свойство. CComponent
canSetProperty() Определяет, можно ли установить свойство. CComponent
createWidget() Создает виджет и инициализирует его. CBaseController
detachBehavior() Отсоединяет поведение от компонента. CComponent
detachBehaviors() Отсоединяет все поведения от компонента. CComponent
detachEventHandler() Отсоединяет существующий обработчик событий. CComponent
disableBehavior() Отключает присоединённое поведение. CComponent
disableBehaviors() Отключает все присоединённые поведения к данному компоненту. CComponent
enableBehavior() Включает присоединённое поведение. CComponent
enableBehaviors() Включает все присоединённые поведения к данному компоненту. CComponent
endCache() Заканчивает кэширование фрагмента. CBaseController
endClip() Заканчивает запись клипа. CBaseController
endContent() Заканчивает отображение содержимого. CBaseController
endWidget() Заканчивает выполнение указанного виджета. CBaseController
evaluateExpression() Вычисляет выражение PHP или обратный вызов в контексте этого компонента. CComponent
getController() Возвращает контроллер, к которому принадлежит этот виджет. CWidget
getEventHandlers() Возвращает список присоединённых обработчиков событий для события. CComponent
getId() Возвращает идентификатор виджета или генерирует новый, если запрошено. CWidget
getOwner() Возвращает владельца/создателя этого виджета. CWidget
getViewFile() Ищет файл скрипта представления по имени представления. CWidget
getViewPath() Возвращает директорию, содержащую файлы представлений для этого виджета. CWidget
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли для данного события присоединённые обработчики. CComponent
hasProperty() Определяет, определено ли свойство. CComponent
init() Инициализирует виджет. CWidget
raiseEvent() Возбуждает событие. CComponent
registerClientScript() Регистрирует необходимый CSS и JavaScript. CMultiFileUpload
render() Отображает представление. CWidget
renderFile() Отображает файл представления. CBaseController
renderInternal() Отображает файл представления. CBaseController
run() Выполняет виджет. CMultiFileUpload
setId() Устанавливает идентификатор виджета. CWidget
widget() Создаёт виджет и выполняет его. CBaseController

Защищённые методы

Метод Описание Определено в
getClientOptions() Возвращает параметры javascript. CMultiFileUpload
hasModel() Определяет, связан ли этот виджет с моделью данных. CInputWidget
resolveNameID() CInputWidget

Подробное описание свойств

accept свойство

public string $accept;

Типы файлов, которые разрешены (например, "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;

дополнительные параметры, которые можно передать в конструктор объекта multifile js.

Свойство remove

public string $remove;

метка для кнопки удаления. По умолчанию «Удалить».

Свойство selected

public string $selected;

сообщение, отображаемое при выборе файла.

Подробное описание методов

getClientOptions() метод

protected array getClientOptions()
{return} массив параметры javascript
Исходный код: framework/web/widgets/CMultiFileUpload.php#116 (показать)
protected function getClientOptions()
{
    
$options=$this->options;
    foreach(array(
'onFileRemove','afterFileRemove','onFileAppend','afterFileAppend','onFileSelect','afterFileSelect') as $event)
    {
        if(isset(
$options[$event]) && !($options[$event] instanceof CJavaScriptExpression))
            
$options[$event]=new CJavaScriptExpression($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#101 (показать)
public function registerClientScript()
{
    
$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#85 (показать)
public function run()
{
    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();
    echo 
CHtml::fileField($name,'',$this->htmlOptions);
}

Выполняет виджет. Этот метод регистрирует все необходимые клиентские скрипты и отображает загрузчик множественных файлов.

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CMultiFileUpload

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API