Spec-Zone.ru › Yii 1.1

CListView

Пакет zii.widgets
Наследование класс CListView » CBaseListView » CWidget » CBaseController » CComponent
С момента 1.1
Исходный код framework/zii/widgets/CListView.php
CListView отображает список элементов данных в виде списка.

В отличие от CGridView, который отображает элементы данных в таблице, CListView позволяет использовать шаблон представления для рендеринга каждого элемента данных. В результате CListView может генерировать более гибкий результат рендеринга.

CListView поддерживает сортировку и пагинацию элементов данных. Сортировка и пагинация могут выполняться в режиме AJAX или обычного запроса страницы. Преимущество использования CListView заключается в том, что при отключении JavaScript в браузере пользователя сортировка и пагинация автоматически переключаются на обычные запросы страницы и по-прежнему функционируют как ожидается.

CListView следует использовать вместе с провайдером данных, предпочтительно с CActiveDataProvider.

Минимальный код для использования CListView выглядит следующим образом:

$dataProvider=new CActiveDataProvider('Post');

$this->widget('zii.widgets.CListView', array(
    'dataProvider'=>$dataProvider,
    'itemView'=>'_post',   // refers to the partial view named '_post'
    'sortableAttributes'=>array(
        'title',
        'create_time'=>'Post Time',
    ),
));


Приведенный выше код сначала создаёт провайдер данных для Post класса ActiveRecord. Затем он использует CListView для отображения каждого элемента данных, возвращённого провайдером данных. Отображение выполняется посредством частичного представления с именем '_post'. Это частичное представление будет рендериться один раз для каждого элемента данных. В представлении можно получить доступ к текущему элементу данных через переменную $data. Для получения более подробной информации см. itemView.

Для поддержки сортировки необходимо указать свойство sortableAttributes. В результате будет отображен список гиперссылок, позволяющих отсортировать данные.

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

Свойство Тип Описание Определено
actionPrefix строка префикс к идентификаторам действий. CWidget
afterAjaxUpdate строка функция javascript, которая будет вызвана после успешного получения ответа AJAX. CListView
ajaxType строка тип ('GET' или 'POST') запросов AJAX. CListView
ajaxUpdate смешанный тип Идентификатор контейнера, содержимое которого может быть обновлено с помощью ответа AJAX. CListView
ajaxUpdateError строка функция javascript, которая будет вызвана в случае ошибки обновления AJAX. CListView
ajaxUrl смешанный тип URL для отправки запросов AJAX. CListView
ajaxVar строка имя переменной GET, указывающей, что запрос является запросом AJAX, инициированным этим виджетом. CListView
baseScriptUrl строка базовый URL скрипта для всех ресурсов списка (например, javascript, CSS-файл, изображения). CListView
beforeAjaxUpdate строка функция javascript, которая будет вызвана перед обновлением AJAX. CListView
controller CController Возвращает контроллер, к которому относится этот виджет. CWidget
cssFile строка URL CSS-файла, используемого этим списком. CListView
dataProvider IDataProvider Провайдер данных для представления. CBaseListView
emptyCssClass строка имя CSS-класса для контейнера свойства emptyText. CBaseListView
emptyTagName строка имя HTML-тега для контейнера свойства emptyText. CBaseListView
emptyText строка сообщение, отображаемое, если dataProvider не содержит данных. CBaseListView
enableHistory логическое включает ли использование {@link https://developer. CListView
enablePagination логическое включает ли пагинацию. CBaseListView
enableSorting логическое включает ли сортировку. CBaseListView
htmlOptions массив HTML-опции для тега контейнера представления. CBaseListView
id строка Возвращает ID виджета или генерирует новый, если запрошено. CWidget
itemView строка представление, используемое для рендеринга каждого элемента данных. CListView
itemsCssClass строка имя CSS-класса для контейнера всех элементов отображения данных. CBaseListView
itemsTagName строка имя HTML-тега для контейнера всех элементов отображения данных. CListView
loadingCssClass строка имя CSS-класса, которое будет назначено элементу контейнера виджета, когда виджет обновляет свое содержимое через AJAX. CListView
owner CBaseController Возвращает владельца/создателя этого виджета. CWidget
pager массив|строка настройка для пагинации. CBaseListView
pagerCssClass строка имя CSS-класса для контейнера пагинации. CBaseListView
separator строка HTML-код, отображаемый между любыми двумя последовательными элементами. CListView
skin смешанный тип имя скина, используемого этим виджетом. CWidget
sortableAttributes массив список имен сортируемых атрибутов. CListView
sorterCssClass строка имя CSS-класса для контейнера сортировки. CListView
sorterFooter строка текст, отображаемый после ссылок сортировки. CListView
sorterHeader строка текст, отображаемый перед ссылками сортировки. CListView
summaryCssClass строка имя CSS-класса для контейнера текста резюме. CBaseListView
summaryTagName строка имя HTML-тега для контейнера свойства summaryText. CBaseListView
summaryText строка шаблон текста резюме для представления. CBaseListView
tagName строка имя тега для контейнера представления. CBaseListView
template строка шаблон, используемый для управления макетом различных компонентов в представлении списка. CListView
updateSelector строка jQuery селектор HTML-элементов, которые могут инициировать обновления AJAX при нажатии. CListView
viewData массив дополнительные данные, передаваемые в itemView при рендеринге каждого элемента данных. CListView
viewPath строка Возвращает директорию, содержащую файлы представления для данного виджета. CWidget

Публичные методы

Метод Описание Определено в
__call() Вызывает метод с указанным именем, который не является методом класса. CComponent
__construct() Конструктор. CWidget
__get() Возвращает значение свойства, список обработчиков событий или поведение по его имени. CComponent
__isset() Проверяет, является ли значение свойства null. 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() Инициализирует список представлений. CListView
raiseEvent() Вызывает событие. CComponent
registerClientScript() Регистрирует необходимые скрипты клиента. CListView
render() Рендерит представление. CWidget
renderContent() Рендерит основное содержимое представления. CBaseListView
renderEmptyText() Рендерит сообщение об отсутствии данных, когда нет данных. CBaseListView
renderFile() Рендерит файл представления. CBaseController
renderInternal() Рендерит файл представления. CBaseController
renderItems() Рендерит список элементов данных. CListView
renderKeys() Рендерит значения ключей данных в скрытом теге. CBaseListView
renderPager() Рендерит страницу. CBaseListView
renderSorter() Рендерит сортировщик. CListView
renderSummary() Рендерит текст сводки. CBaseListView
run() Рендерит представление. CBaseListView
setId() Устанавливает идентификатор виджета. CWidget
widget() Создаёт виджет и выполняет его. CBaseController

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

Метод Описание Определено в
renderSection() Отображает раздел. CBaseListView

Подробности свойств

afterAjaxUpdate свойство

public string $afterAjaxUpdate;

Функция JavaScript, которая будет вызвана после успешного получения ответа AJAX. Подпись функции: function(id, data) , где «id» относится к ID списка, а «data» — к полученным данным ответа AJAX.

ajaxType свойство (доступно с v1.1.14)

public string $ajaxType;

Тип («GET» или «POST») запросов AJAX. Если не задано, используется «GET». Вы можете установить значение «POST», если фильтруете по многим полям одновременно и у вас проблемы с длиной строки запроса GET. Обратите внимание, что в режиме POST прямые ссылки и функция enableHistory могут работать некорректно!

ajaxUpdate свойство

public mixed $ajaxUpdate;

ID контейнера, содержимое которого может быть обновлено с помощью ответа AJAX. По умолчанию null, что означает контейнер для данного экземпляра списка. Если значение false, сортировка и постраничная навигация будут выполняться в обычных запросах страницы вместо запросов AJAX. Если сортировка и постраничная навигация должны вызывать обновление содержимого нескольких контейнеров по методу AJAX, эти идентификаторы контейнеров могут быть перечислены здесь (разделены запятыми).

ajaxUpdateError свойство (доступно с v1.1.13)

public string $ajaxUpdateError;

Функция JavaScript, которая будет вызвана в случае ошибки обновления AJAX.

Подпись функции: function(xhr, textStatus, errorThrown, errorMessage)

  • xhr — объект XMLHttpRequest.
  • textStatus — строка, описывающая тип произошедшей ошибки. Возможные значения (кроме null) — «timeout», «error», «notmodified» и «parsererror»
  • errorThrown — необъект исключения, если таковое имело место.
  • errorMessage — стандартное сообщение об ошибке CGridView, полученное из xhr и errorThrown. Полезно, если вы просто хотите отобразить эту ошибку по-другому. CGridView по умолчанию отображает эту ошибку с помощью javascript.alert()
Примечание: этот обработчик не вызывается для запросов JSONP, так как они не используют XMLHttpRequest.

Пример (добавить в вызов CGridView):
 ...
 'ajaxUpdateError'=>'function(xhr,ts,et,err,id){ $("#"+id).text(err); }',
 ...

ajaxUrl свойство (доступно с v1.1.8)

public mixed $ajaxUrl;

URL для запросов AJAX, который должен быть отправлен. На это свойство будет применено CHtml::normalizeUrl(). Если не указано, для запросов AJAX будет использоваться текущий URL страницы.

ajaxVar свойство

public string $ajaxVar;

Имя переменной GET, которая указывает, что запрос является запросом AJAX, инициированным этим виджетом. По умолчанию «ajax». Это эффективно только тогда, когда ajaxUpdate не равно false.

baseScriptUrl свойство

public string $baseScriptUrl;

Базовый URL скрипта для всех ресурсов списка (например, файлы JavaScript, CSS, изображения). По умолчанию null, что означает использование интегрированных ресурсов списка (которые публикуются как активы).

beforeAjaxUpdate свойство

public string $beforeAjaxUpdate;

Функция JavaScript, которая будет вызвана перед обновлением AJAX. Подпись функции: function(id) , где «id» относится к ID списка.

cssFile свойство

public string $cssFile;

URL файла CSS, используемого этим списком. По умолчанию null, что означает использование интегрированного файла CSS. Если это значение равно false, вы несёте ответственность за явное включение необходимого файла CSS на вашей странице.

enableHistory свойство (доступно с v1.1.11)

public boolean $enableHistory;

Нужно ли использовать объект истории DOM DOM history object. Установите это свойство в значение true, чтобы сохранить состояние списка при повторном посещении страницы. Обратите внимание на два ограничения для этой функции: — Эта функция совместима только с браузерами, поддерживающими HTML5. — Ожидайте непредсказуемого поведения (например, нескольких запросов AJAX) если на одной странице имеется более одной сетки/списка с включённой функцией enableHistory.

itemView свойство

public string $itemView;

Вид, используемый для отображения каждого элемента данных. Это значение свойства будет передано в качестве первого параметра либо CController::renderPartial, либо CWidget::render для отображения каждого элемента данных. В соответствующей шаблоне представления, помимо переменных, объявленных в viewData, можно использовать следующие переменные:

  • $this: относится к владельцу этого виджета списка. Например, если виджет находится в представлении контроллера, то $this относится к контроллеру.
  • $data: относится к элементу данных, который в данный момент отображается.
  • $index: относится к нулевому индексу элемента данных, который в данный момент отображается.
  • $widget: относится к экземпляру этого виджета списка.

itemsTagName свойство (доступно с v1.1.4)

public string $itemsTagName;

Имя HTML-тега для контейнера отображения всех элементов данных. По умолчанию «div».

loadingCssClass свойство (доступно с v1.1.1)

public string $loadingCssClass;

Имя класса CSS, которое будет назначено элементу контейнера виджета при обновлении виджетом своего содержимого с помощью AJAX. По умолчанию «list-view-loading».

separator свойство (доступно с v1.1.7)

public string $separator;

HTML-код, который будет отображаться между любыми двумя последовательными элементами.

sortableAttributes свойство

public array $sortableAttributes;

Список имён сортируемых атрибутов. Для того, чтобы атрибут был сортируемым, он также должен быть сортируемым атрибутом в свойстве IDataProvider::sort объекта dataProvider.

См. также

  • enableSorting

sorterCssClass свойство

public string $sorterCssClass;

Имя класса CSS для контейнера сортировки. По умолчанию «sorter».

sorterFooter свойство

public string $sorterFooter;

Текст, отображаемый после ссылок сортировки. По умолчанию пусто.

sorterHeader свойство

public string $sorterHeader;

Текст, отображаемый перед ссылками сортировки. По умолчанию «Сортировать по: ».

template свойство

public string $template;

Шаблон, используемый для управления макетом различных компонентов в списке. Различаются следующие токены: {summary}, {sorter}, {items} и {pager}. Они будут заменены на текст резюме, ссылки сортировки, список элементов данных и постраничную навигацию.

updateSelector свойство (доступно с v1.1.7)

public string $updateSelector;

jQuery-селектор HTML-элементов, которые могут инициировать обновления AJAX при нажатии на них. Если не задано, ссылки постраничной навигации и ссылки сортировки будут инициировать обновления AJAX.

viewData свойство

public array $viewData;

Дополнительные данные, передаваемые в itemView при отображении каждого элемента данных. Этот массив будет преобразован в локальные PHP-переменные, доступные в itemView.

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

init() метод

public void init()
Исходный код: framework/zii/widgets/CListView.php#207 (показать)
public function init()
{
    if(
$this->itemView===null)
        throw new 
CException(Yii::t('zii','The property "itemView" cannot be empty.'));
    
parent::init();

    if(!isset(
$this->htmlOptions['class']))
        
$this->htmlOptions['class']='list-view';

    if(
$this->baseScriptUrl===null)
        
$this->baseScriptUrl=Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias('zii.widgets.assets')).'/listview';

    if(
$this->cssFile!==false)
    {
        if(
$this->cssFile===null)
            
$this->cssFile=$this->baseScriptUrl.'/styles.css';
        
Yii::app()->getClientScript()->registerCssFile($this->cssFile);
    }
}

Инициализирует список. Этот метод инициализирует необходимые значения свойств и создаёт объекты столбцов.

registerClientScript() метод

public void registerClientScript()
Исходный код: framework/zii/widgets/CListView.php#230 (показать)
public function registerClientScript()
{
    
$id=$this->getId();

    if(
$this->ajaxUpdate===false)
        
$ajaxUpdate=array();
    else
        
$ajaxUpdate=array_unique(preg_split('/\s*,\s*/',$this->ajaxUpdate.','.$id,-1,PREG_SPLIT_NO_EMPTY));
    
$options=array(
        
'ajaxUpdate'=>$ajaxUpdate,
        
'ajaxVar'=>$this->ajaxVar,
        
'pagerClass'=>$this->pagerCssClass,
        
'loadingClass'=>$this->loadingCssClass,
        
'sorterClass'=>$this->sorterCssClass,
        
'enableHistory'=>$this->enableHistory
    
);
    if(
$this->ajaxUrl!==null)
        
$options['url']=CHtml::normalizeUrl($this->ajaxUrl);
    if(
$this->ajaxType!==null)
        
$options['ajaxType']=strtoupper($this->ajaxType);
    if(
$this->updateSelector!==null)
        
$options['updateSelector']=$this->updateSelector;
    foreach(array(
'beforeAjaxUpdate', 'afterAjaxUpdate', 'ajaxUpdateError') as $event)
    {
        if(
$this->$event!==null)
        {
            if(
$this->$event instanceof CJavaScriptExpression)
                
$options[$event]=$this->$event;
            else
                
$options[$event]=new CJavaScriptExpression($this->$event);
        }
    }

    
$options=CJavaScript::encode($options);
    
$cs=Yii::app()->getClientScript();
    
$cs->registerCoreScript('jquery');
    
$cs->registerCoreScript('bbq');
    if(
$this->enableHistory)
        
$cs->registerCoreScript('history');
    
$cs->registerScriptFile($this->baseScriptUrl.'/jquery.yiilistview.js',CClientScript::POS_END);
    
$cs->registerScript(__CLASS__.'#'.$id,"jQuery('#$id').yiiListView($options);");
}

Регистрирует необходимые скрипты клиента.

renderItems() метод

public void renderItems()
Исходный код: framework/zii/widgets/CListView.php#276 (показать)
public function renderItems()
{
    echo 
CHtml::openTag($this->itemsTagName,array('class'=>$this->itemsCssClass))."\n";
    
$data=$this->dataProvider->getData();
    if((
$n=count($data))>0)
    {
        
$owner=$this->getOwner();
        
$viewFile=$owner->getViewFile($this->itemView);
        
$j=0;
        foreach(
$data as $i=>$item)
        {
            
$data=$this->viewData;
            
$data['index']=$i;
            
$data['data']=$item;
            
$data['widget']=$this;
            
$owner->renderFile($viewFile,$data);
            if(
$j++ < $n-1)
                echo 
$this->separator;
        }
    }
    else
        
$this->renderEmptyText();
    echo 
CHtml::closeTag($this->itemsTagName);
}

Отображает список элементов данных.

renderSorter() метод

public void renderSorter()
Исходный код: framework/zii/widgets/CListView.php#304 (показать)
public function renderSorter()
{
    if(
$this->dataProvider->getItemCount()<=0 || !$this->enableSorting || empty($this->sortableAttributes))
        return;
    echo 
CHtml::openTag('div',array('class'=>$this->sorterCssClass))."\n";
    echo 
$this->sorterHeader===null ? Yii::t('zii','Sort by: ') : $this->sorterHeader;
    echo 
"<ul>\n";
    
$sort=$this->dataProvider->getSort();
    foreach(
$this->sortableAttributes as $name=>$label)
    {
        echo 
"<li>";
        if(
is_integer($name))
            echo 
$sort->link($label);
        else
            echo 
$sort->link($name,$label);
        echo 
"</li>\n";
    }
    echo 
"</ul>";
    echo 
$this->sorterFooter;
    echo 
CHtml::closeTag('div');
}

Отображает сортировку.

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

Spec-Zone.ru

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