CBaseListView
| Пакет | zii.widgets |
|---|---|
| Наследование | абстрактный класс CBaseListView » CWidget » CBaseController » CComponent |
| Подклассы | CGridView, CListView |
| С версии | 1.1 |
| Исходный код | framework/zii/widgets/CBaseListView.php |
CBaseListView реализует общие функции, необходимые виджету представления для отображения нескольких моделей.
Свойства публичного доступа
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| actionPrefix | строка | префикс к идентификаторам действий. | CWidget |
| controller | CController | Возвращает контроллер, к которому принадлежит этот виджет. | CWidget |
| dataProvider | IDataProvider | источник данных для представления. | CBaseListView |
| emptyCssClass | строка | имя CSS-класса для контейнера свойства emptyText. | CBaseListView |
| emptyTagName | строка | имя HTML-тега для контейнера свойства emptyText. | CBaseListView |
| emptyText | строка | сообщение, отображаемое, когда dataProvider не содержит данных. | CBaseListView |
| enablePagination | логическое значение | включить постраничный вывод. | CBaseListView |
| enableSorting | логическое значение | включить сортировку. | CBaseListView |
| htmlOptions | массив | HTML-опции для тега контейнера представления. | CBaseListView |
| id | строка | Возвращает идентификатор виджета или генерирует новый, если необходимо. | CWidget |
| itemsCssClass | строка | имя CSS-класса для контейнера отображения всех элементов данных. | CBaseListView |
| loadingCssClass | строка | имя CSS-класса, которое будет назначено элементу контейнера виджета при обновлении содержимого виджета через AJAX. | CBaseListView |
| owner | CBaseController | Возвращает владельца/создателя этого виджета. | CWidget |
| pager | массив или строка | конфигурация для навигации по страницам. | CBaseListView |
| pagerCssClass | строка | имя CSS-класса для контейнера навигации по страницам. | CBaseListView |
| skin | смешанный тип | имя скина, используемого этим виджетом. | CWidget |
| summaryCssClass | строка | имя CSS-класса для контейнера текста сводки. | CBaseListView |
| summaryTagName | строка | имя HTML-тега для контейнера свойства summaryText. | CBaseListView |
| summaryText | строка | шаблон текста сводки для представления. | CBaseListView |
| tagName | строка | имя тега для контейнера представления. | CBaseListView |
| template | строка | шаблон, используемый для управления макетом различных разделов в представлении. | CBaseListView |
| viewPath | строка | Возвращает директорию, содержащую файлы представления для этого виджета. | CWidget |
Общедоступные методы
| Метод | Описание | Определено в |
|---|---|---|
| __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() | Инициализирует представление. | CBaseListView |
| raiseEvent() | Вызывает событие. | CComponent |
| registerClientScript() | Регистрирует необходимые скрипты клиента. | CBaseListView |
| render() | Отображает представление. | CWidget |
| renderContent() | Отображает основное содержимое представления. | CBaseListView |
| renderEmptyText() | Отображает сообщение об отсутствии данных, если данные отсутствуют. | CBaseListView |
| renderFile() | Отображает файл представления. | CBaseController |
| renderInternal() | Отображает файл представления. | CBaseController |
| renderItems() | Отображает элементы данных для представления. | CBaseListView |
| renderKeys() | Отображает значения ключей данных в скрытом теге. | CBaseListView |
| renderPager() | Отображает постраничную навигацию. | CBaseListView |
| renderSummary() | Отображает сводную информацию. | CBaseListView |
| run() | Отображает представление. | CBaseListView |
| setId() | Устанавливает идентификатор виджета. | CWidget |
| widget() | Создает виджет и выполняет его. | CBaseController |
Защищенные методы
| Метод | Описание | Определено в |
|---|---|---|
| renderSection() | Отображает раздел. | CBaseListView |
Подробное описание свойств
dataProvider свойство
public IDataProvider $dataProvider;
источник данных для представления.
emptyCssClass свойство (доступно начиная с v1.1.16)
public string $emptyCssClass;
Имя класса CSS для контейнера свойства emptyText. По умолчанию 'empty'.
emptyTagName свойство
public string $emptyTagName;
Имя HTML тега для контейнера свойства emptyText.
emptyText свойство
public string $emptyText;
Сообщение, отображаемое, когда у dataProvider нет данных.
enablePagination свойство
public boolean $enablePagination;
Включить или выключить пагинацию. Если свойство IDataProvider::pagination объекта dataProvider имеет значение false, это свойство также будет считаться false. При включенной пагинации в представлении будет отображен компонент пагинации для управления отображением данных. По умолчанию true.
enableSorting свойство
public boolean $enableSorting;
Включить или выключить сортировку. Если свойство IDataProvider::sort объекта dataProvider имеет значение false, это свойство также будет считаться false. При включенной сортировке заголовки сортируемых столбцов будут кликабельными для сортировки по этому столбцу. По умолчанию true.
См. также
- sortableAttributes
htmlOptions свойство
public array $htmlOptions;
HTML параметры для тега контейнера представления.
itemsCssClass свойство
public string $itemsCssClass;
Имя класса CSS для контейнера отображения всех элементов данных. По умолчанию 'items'. Обратите внимание, что это свойство не должно содержать значения false, null или пустую строку. В противном случае такие значения могут привести к неопределенному поведению.
loadingCssClass свойство (доступно начиная с v1.1.1)
public string $loadingCssClass;
Имя класса CSS, которое будет назначено элементу контейнера виджета, когда виджет обновляет своё содержимое с помощью AJAX. По умолчанию 'loading'.
pager свойство
public array|string $pager;
Настройка для компонента пагинации. По умолчанию array('class'=>'CLinkPager'). Строковое значение будет обрабатываться как имя класса пагинатора ('ClassName' значение аналогично значению array('class'=>'ClassName')). Подробнее о значениях массива конфигурации пагинатора см. CBasePager и CLinkPager.
См. также
pagerCssClass свойство
public string $pagerCssClass;
Имя класса CSS для контейнера пагинатора. По умолчанию 'pager'. Обратите внимание, что это свойство не должно содержать значения false, null или пустую строку. В противном случае такие значения могут привести к неопределенному поведению.
summaryCssClass свойство
public string $summaryCssClass;
Имя класса CSS для контейнера текста сводки. По умолчанию 'summary'.
summaryTagName свойство (доступно начиная с v1.1.16)
public string $summaryTagName;
Имя HTML тега для контейнера свойства summaryText.
summaryText свойство
public string $summaryText;
Шаблон текста сводки для представления. Распознаются следующие плейсхолдеры и будут заменены соответствующими значениями:
- {start}: начальный номер строки (с 1)
- {end}: конечный номер строки (с 1)
- {count}: общее количество строк
- {page}: номер страницы (с 1), доступно начиная с версии 1.1.3
- {pages}: общее количество страниц, доступно начиная с версии 1.1.3
tagName свойство
public string $tagName;
Имя тега для контейнера представления. По умолчанию 'div'.
template свойство
public string $template;
Шаблон, используемый для управления макетом различных секций представления. Распознаются плейсхолдеры: {summary}, {items} и {pager}. Они будут заменены текстом сводки, элементами и пагинатором.
Подробное описание методов
init() метод
public void init() |
public function init()
{
if($this->dataProvider===null)
throw new CException(Yii::t('zii','The "dataProvider" property cannot be empty.'));
$this->dataProvider->getData();
if(isset($this->htmlOptions['id']))
$this->id=$this->htmlOptions['id'];
else
$this->htmlOptions['id']=$this->id;
if($this->enableSorting && $this->dataProvider->getSort()===false)
$this->enableSorting=false;
if($this->enablePagination && $this->dataProvider->getPagination()===false)
$this->enablePagination=false;
}
Инициализирует представление. Этот метод инициализирует необходимые значения свойств и создаёт объекты столбцов.
registerClientScript() метод
public void registerClientScript() |
public function registerClientScript()
{
}
Регистрирует необходимые клиентские скрипты. Этот метод вызывается методом run. Дочерние классы могут переопределить этот метод для регистрации настраиваемых клиентских скриптов.
renderContent() метод
public void renderContent() |
public function renderContent()
{
ob_start();
echo preg_replace_callback("/{(\w+)}/",array($this,'renderSection'),$this->template);
ob_end_flush();
}
Отображает основное содержимое представления. Содержимое разделено на секции, такие как сводка, элементы, пагинатор. Каждая секция отображается методом с именем "renderXyz", где "Xyz" — имя секции. Результаты рендеринга заменят соответствующие плейсхолдеры в template.
renderEmptyText() метод
public void renderEmptyText() |
public function renderEmptyText()
{
$emptyText=$this->emptyText===null ? Yii::t('zii','No results found.') : $this->emptyText;
echo CHtml::tag($this->emptyTagName, array('class'=>$this->emptyCssClass), $emptyText);
}
Отображает сообщение об отсутствии данных, когда нет данных.
renderItems() метод
abstract public void renderItems() |
abstract public function renderItems();
Отображает элементы данных для представления. Каждый элемент соответствует одному экземпляру модели данных. Дочерние классы должны переопределить этот метод, чтобы обеспечить фактическую логику рендеринга элементов.
renderKeys() метод
public void renderKeys() |
public function renderKeys()
{
echo CHtml::openTag('div',array(
'class'=>'keys',
'style'=>'display:none',
'title'=>Yii::app()->getRequest()->getUrl(),
));
foreach($this->dataProvider->getKeys() as $key)
echo "<span>".CHtml::encode($key)."</span>";
echo "</div>\n";
}
Отображает значения ключей данных в скрытом теге.
renderPager() метод
public void renderPager() |
public function renderPager()
{
if(!$this->enablePagination)
return;
$pager=array();
$class='CLinkPager';
if(is_string($this->pager))
$class=$this->pager;
elseif(is_array($this->pager))
{
$pager=$this->pager;
if(isset($pager['class']))
{
$class=$pager['class'];
unset($pager['class']);
}
}
$pager['pages']=$this->dataProvider->getPagination();
if($pager['pages']->getPageCount()>1)
{
echo '<div class="'.$this->pagerCssClass.'">';
$this->widget($class,$pager);
echo '</div>';
}
else
$this->widget($class,$pager);
}
Отображает пагинатор.
renderSection() метод
protected string renderSection(array $matches) | ||
| $matches | массив | соответствия, где $matches[0] представляет весь плейсхолдер, а $matches[1] содержит имя сопоставленного плейсхолдера. |
| {return} | строка | результат рендеринга секции |
protected function renderSection($matches)
{
$method='render'.$matches[1];
if(method_exists($this,$method))
{
$this->$method();
$html=ob_get_contents();
ob_clean();
return $html;
}
else
return $matches[0];
}
Отображает секцию. Этот метод вызывается методом renderContent для каждого плейсхолдера, найденного в template. Он должен возвращать результат рендеринга, который заменит плейсхолдер.
renderSummary() метод
public void renderSummary() |
public function renderSummary()
{
if(($count=$this->dataProvider->getItemCount())<=0)
return;
echo CHtml::openTag($this->summaryTagName, array('class'=>$this->summaryCssClass));
if($this->enablePagination)
{
$pagination=$this->dataProvider->getPagination();
$total=$this->dataProvider->getTotalItemCount();
$start=$pagination->currentPage*$pagination->pageSize+1;
$end=$start+$count-1;
if($end>$total)
{
$end=$total;
$start=$end-$count+1;
}
if(($summaryText=$this->summaryText)===null)
$summaryText=Yii::t('zii','Displaying {start}-{end} of 1 result.|Displaying {start}-{end} of {count} results.',$total);
echo strtr($summaryText,array(
'{start}'=>$start,
'{end}'=>$end,
'{count}'=>$total,
'{page}'=>$pagination->currentPage+1,
'{pages}'=>$pagination->pageCount,
));
}
else
{
if(($summaryText=$this->summaryText)===null)
$summaryText=Yii::t('zii','Total 1 result.|Total {count} results.',$count);
echo strtr($summaryText,array(
'{count}'=>$count,
'{start}'=>1,
'{end}'=>$count,
'{page}'=>1,
'{pages}'=>1,
));
}
echo CHtml::closeTag($this->summaryTagName);
}
Отображает текст сводки.
run() метод
public void run() |
public function run()
{
$this->registerClientScript();
echo CHtml::openTag($this->tagName,$this->htmlOptions)."\n";
$this->renderContent();
$this->renderKeys();
echo CHtml::closeTag($this->tagName);
}
Отображает представление. Это основной вход для всего процесса отрисовки представления. Дочерние классы должны в основном переопределять метод renderContent.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CBaseListView