Spec-Zone.ru › Yii 1.1

CButtonColumn

Пакет zii.widgets.grid
Наследование class CButtonColumn » CGridColumn » CComponent
С 1.1
Исходный код framework/zii/widgets/grid/CButtonColumn.php
CButtonColumn представляет столбец представления таблицы, отображающий одну или несколько кнопок.

По умолчанию, он отображает три кнопки: "просмотр", "редактирование" и "удаление", которые вызывают соответствующие действия для модели строки.

Настроив свойства buttons и template, можно отобразить другие кнопки и настроить порядок их отображения.

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

Свойство Тип Описание Определено
afterDelete строка функция javascript, которая будет вызвана после AJAX-запроса удаления. CButtonColumn
buttons массив настройка для кнопок. CButtonColumn
cssClassExpression строка PHP-выражение, вычисляемое для каждой ячейки данных, результат которого используется в качестве имени класса CSS для ячейки данных. CGridColumn
deleteButtonImageUrl строка URL изображения для кнопки удаления. CButtonColumn
deleteButtonLabel строка метка для кнопки удаления. CButtonColumn
deleteButtonOptions массив HTML-атрибуты для тега кнопки удаления. CButtonColumn
deleteButtonUrl строка PHP-выражение, вычисляемое для каждой кнопки удаления, результат которого используется в качестве URL для кнопки удаления. CButtonColumn
deleteConfirmation строка сообщение подтверждения, отображаемое при нажатии кнопки удаления. CButtonColumn
filterCellContent строка Возвращает содержимое ячейки фильтра. CGridColumn
filterHtmlOptions массив HTML-атрибуты для тега ячейки фильтра. CGridColumn
footer строка текст ячейки подвала. CGridColumn
footerCellContent строка Возвращает содержимое ячейки подвала. CGridColumn
footerHtmlOptions массив HTML-атрибуты для тега ячейки подвала. CButtonColumn
grid CGridView объект представления таблицы, владеющий этим столбцом. CGridColumn
hasFooter булево указывает, имеет ли этот столбец ячейку подвала. CGridColumn
header строка текст ячейки заголовка. CGridColumn
headerCellContent строка Возвращает содержимое ячейки заголовка. CGridColumn
headerHtmlOptions массив HTML-атрибуты для тега ячейки заголовка. CButtonColumn
htmlOptions массив HTML-атрибуты для тегов ячеек данных. CButtonColumn
id строка идентификатор этого столбца. CGridColumn
template строка шаблон, используемый для отображения содержимого в каждой ячейке данных. CButtonColumn
updateButtonImageUrl строка URL изображения для кнопки редактирования. CButtonColumn
updateButtonLabel строка метка для кнопки редактирования. CButtonColumn
updateButtonOptions массив HTML-атрибуты для тега кнопки редактирования. CButtonColumn
updateButtonUrl строка PHP-выражение, вычисляемое для каждой кнопки редактирования, результат которого используется в качестве URL для кнопки редактирования. CButtonColumn
viewButtonImageUrl строка URL изображения для кнопки просмотра. CButtonColumn
viewButtonLabel строка метка для кнопки просмотра. CButtonColumn
viewButtonOptions массив HTML-атрибуты для тега кнопки просмотра. CButtonColumn
viewButtonUrl строка PHP-выражение, вычисляемое для каждой кнопки просмотра, результат которого используется в качестве URL для кнопки просмотра. CButtonColumn
visible булево указывает, отображается ли этот столбец. CGridColumn

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

Метод Описание Определено в
__call() Вызывает метод с заданным именем, который не является методом класса. CComponent
__construct() Конструктор. CGridColumn
__get() Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. CComponent
__isset() Проверяет, является ли значение свойства null. CComponent
__set() Устанавливает значение свойства компонента. CComponent
__unset() Устанавливает свойство компонента в null. CComponent
asa() Возвращает объект поведения с указанным именем. CComponent
attachBehavior() Присоединяет поведение к этому компоненту. CComponent
attachBehaviors() Присоединяет список поведений к компоненту. CComponent
attachEventHandler() Присоединяет обработчик событий к событию. CComponent
canGetProperty() Определяет, можно ли считать свойство. CComponent
canSetProperty() Определяет, можно ли установить свойство. CComponent
detachBehavior() Отсоединяет поведение от компонента. CComponent
detachBehaviors() Отсоединяет все поведения от компонента. CComponent
detachEventHandler() Отсоединяет существующий обработчик событий. CComponent
disableBehavior() Отключает присоединённое поведение. CComponent
disableBehaviors() Отключает все присоединённые к этому компоненту поведения. CComponent
enableBehavior() Включает присоединённое поведение. CComponent
enableBehaviors() Включает все присоединённые к этому компоненту поведения. CComponent
evaluateExpression() Вычисляет PHP-выражение или обратный вызов в контексте этого компонента. CComponent
getDataCellContent() Возвращает содержимое ячейки данных. CButtonColumn
getEventHandlers() Возвращает список присоединённых обработчиков событий для события. CComponent
getFilterCellContent() Возвращает содержимое ячейки фильтра. CGridColumn
getFooterCellContent() Возвращает содержимое ячейки подвала. CGridColumn
getHasFooter() Возвращает, имеет ли этот столбец ячейку подвала. Это определяется на основе того, установлено ли footer. CGridColumn
getHeaderCellContent() Возвращает содержимое ячейки заголовка. CGridColumn
hasEvent() Определяет, определено ли событие. CComponent
hasEventHandler() Проверяет, есть ли у заданного события прикреплённые обработчики. CComponent
hasProperty() Определяет, определено ли свойство. CComponent
init() Инициализирует столбец. CButtonColumn
raiseEvent() Вызывает событие. CComponent
renderDataCell() Отображает ячейку данных. CGridColumn
renderFilterCell() Отображает ячейку фильтра. CGridColumn
renderFooterCell() Отображает ячейку подвала. CGridColumn
renderHeaderCell() Отображает ячейку заголовка. CGridColumn

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

Метод Описание Определено в
initDefaultButtons() Инициализирует стандартные кнопки (просмотр, обновление и удаление). CButtonColumn
registerClientScript() Регистрирует скрипты для столбца с кнопками. CButtonColumn
renderButton() Отображает ссылку-кнопку. CButtonColumn
renderDataCellContent() Отображает содержимое ячейки данных. CGridColumn
renderFilterCellContent() Отображает содержимое ячейки фильтра. CGridColumn
renderFooterCellContent() Отображает содержимое ячейки подвала. CGridColumn
renderHeaderCellContent() Отображает содержимое ячейки заголовка. CGridColumn

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

afterDelete свойство

public string $afterDelete;

функция javascript, которая будет вызвана после вызова ajax удаления. Это свойство используется только в том случае, если $this->buttons['delete']['click'] не установлено.

Подпись функции: function(link, success, data)

  • link ссылается на ссылку удаления.
  • success статус вызова ajax, true, если вызов ajax был успешным, false, если вызов ajax не удался.
  • data данные, возвращённые сервером в случае успешного вызова или объект XHR в случае ошибки.
Обратите внимание, что если success равно true, это не означает, что удаление было успешным, это только означает, что вызов ajax был успешным.

Пример:
 array(
    class'=>'CButtonColumn',
    'afterDelete'=>'function(link,success,data){ if(success) alert("Delete completed successfully"); }',
 ),

buttons свойство

public array $buttons;

конфигурация для кнопок. Каждый элемент массива определяет одну кнопку, которая имеет следующий формат:

'buttonID' => array(
    'label'=>'...',     // text label of the button
    'url'=>'...',       // a PHP expression for generating the URL of the button
    'imageUrl'=>'...',  // image URL of the button. If not set or false, a text link is used
    'options'=>array(...), // HTML options for the button tag
    'click'=>'...',     // a JS function to be invoked when the button is clicked
    'visible'=>'...',   // a PHP expression for determining whether the button is visible
)


В PHP-выражении для опции 'url' и/или 'visible' переменная $row относится к текущему номеру строки (нумерация с нуля), а $data относится к модели данных для строки. PHP-выражение будет вычислено с помощью evaluateExpression. PHP-выражение может быть любым кодом PHP, имеющим значение. Чтобы узнать больше о том, что такое выражение, обратитесь к справочнику PHP.

Если 'buttonID' равен 'view', 'update' или 'delete', опции будут применены к стандартным кнопкам.

Обратите внимание, что для отображения нестандартных кнопок необходимо настроить свойство template таким образом, чтобы соответствующие идентификаторы кнопок появлялись как токены в шаблоне.

deleteButtonImageUrl свойство

public string $deleteButtonImageUrl;

URL изображения для кнопки удаления. Если не установлено, будет использовано интегрированное изображение. Вы можете установить это свойство в false, чтобы отобразить текстовую ссылку вместо неё.

deleteButtonLabel свойство

public string $deleteButtonLabel;

метка для кнопки удаления. По умолчанию «Удалить». Обратите внимание, что метка не будет закодирована в HTML при отображении.

deleteButtonOptions свойство

public array $deleteButtonOptions;

HTML параметры для тега кнопки удаления.

deleteButtonUrl свойство

public string $deleteButtonUrl;

PHP выражение, которое вычисляется для каждой кнопки удаления, а результат используется в качестве URL для кнопки удаления. В этом выражении вы можете использовать следующие переменные:

  • $row номер строки (с нуля)
  • $data модель данных для строки
  • $this объект столбца
PHP выражение будет вычислено с помощью evaluateExpression.

PHP выражение может быть любым PHP кодом, имеющим значение. Чтобы узнать больше о том, что такое выражение, обратитесь к руководству PHP.

deleteConfirmation свойство

public string $deleteConfirmation;

сообщение подтверждения, отображаемое при нажатии кнопки удаления. Установив это свойство в false, сообщение подтверждения не будет отображаться. Это свойство используется только если $this->buttons['delete']['click'] не задано.

footerHtmlOptions свойство

public array $footerHtmlOptions;

HTML параметры для тега ячейки подвала.

headerHtmlOptions свойство

public array $headerHtmlOptions;

HTML параметры для тега ячейки заголовка.

htmlOptions свойство

public array $htmlOptions;

HTML параметры для тегов ячеек данных.

template свойство

public string $template;

шаблон, используемый для отображения содержимого в каждой ячейке данных. Эти стандартные токены распознаются: {view}, {update} и {delete}. Если свойство buttons определяет дополнительные кнопки, их идентификаторы также распознаются здесь. Например, если кнопка с именем «preview» объявлена в buttons, мы можем использовать токен «{preview}» здесь, чтобы указать, где отобразить кнопку.

updateButtonImageUrl свойство

public string $updateButtonImageUrl;

URL изображения для кнопки обновления. Если не задано, будет использоваться встроенное изображение. Вы можете установить это свойство в false, чтобы вместо этого отобразить текстовую ссылку.

updateButtonLabel свойство

public string $updateButtonLabel;

метка для кнопки обновления. По умолчанию «Обновить». Обратите внимание, что метка не будет закодирована в HTML при отображении.

updateButtonOptions свойство

public array $updateButtonOptions;

HTML параметры для тега кнопки обновления.

updateButtonUrl свойство

public string $updateButtonUrl;

PHP выражение, которое вычисляется для каждой кнопки обновления, а результат используется в качестве URL для кнопки обновления. В этом выражении вы можете использовать следующие переменные:

  • $row номер строки (с нуля)
  • $data модель данных для строки
  • $this объект столбца
PHP выражение будет вычислено с помощью evaluateExpression.

PHP выражение может быть любым PHP кодом, имеющим значение. Чтобы узнать больше о том, что такое выражение, обратитесь к руководству PHP.

viewButtonImageUrl свойство

public string $viewButtonImageUrl;

URL изображения для кнопки просмотра. Если не задано, будет использовано встроенное изображение. Вы можете установить это свойство в false, чтобы вместо этого отобразить текстовую ссылку.

viewButtonLabel свойство

public string $viewButtonLabel;

метка для кнопки просмотра. По умолчанию «Просмотреть». Обратите внимание, что метка не будет закодирована в HTML при отображении.

viewButtonOptions свойство

public array $viewButtonOptions;

HTML параметры для тега кнопки просмотра.

viewButtonUrl свойство

public string $viewButtonUrl;

PHP выражение, которое вычисляется для каждой кнопки просмотра, а результат используется в качестве URL для кнопки просмотра. В этом выражении вы можете использовать следующие переменные:

  • $row номер строки (с нуля)
  • $data модель данных для строки
  • $this объект столбца
PHP выражение будет вычислено с помощью evaluateExpression.

PHP выражение может быть любым PHP кодом, имеющим значение. Чтобы узнать больше о том, что такое выражение, обратитесь к руководству PHP.

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

getDataCellContent() метод (доступен с версии v1.1.16)

public string getDataCellContent(integer $row)
$row целое число номер строки (с нуля)
{return} строка содержимое ячейки данных.
Исходный код: framework/zii/widgets/grid/CButtonColumn.php#314 (показать)
public function getDataCellContent($row)
{
    
$data=$this->grid->dataProvider->data[$row];
    
$tr=array();
    
ob_start();
    foreach(
$this->buttons as $id=>$button)
    {
        
$this->renderButton($id,$button,$row,$data);
        
$tr['{'.$id.'}']=ob_get_contents();
        
ob_clean();
    }
    
ob_end_clean();
    return 
strtr($this->template,$tr);
}

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

init() метод

public void init()
Исходный код: framework/zii/widgets/grid/CButtonColumn.php#192 (показать)
public function init()
{
    
$this->initDefaultButtons();

    foreach(
$this->buttons as $id=>$button)
    {
        if(
strpos($this->template,'{'.$id.'}')===false)
            unset(
$this->buttons[$id]);
        elseif(isset(
$button['click']))
        {
            if(!isset(
$button['options']['class']))
                
$this->buttons[$id]['options']['class']=$id;
            if(!(
$button['click'] instanceof CJavaScriptExpression))
                
$this->buttons[$id]['click']=new CJavaScriptExpression($button['click']);
        }
    }

    
$this->registerClientScript();
}

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

initDefaultButtons() метод

protected void initDefaultButtons()
Исходный код: framework/zii/widgets/grid/CButtonColumn.php#215 (показать)
protected function initDefaultButtons()
{
    if(
$this->viewButtonLabel===null)
        
$this->viewButtonLabel=Yii::t('zii','View');
    if(
$this->updateButtonLabel===null)
        
$this->updateButtonLabel=Yii::t('zii','Update');
    if(
$this->deleteButtonLabel===null)
        
$this->deleteButtonLabel=Yii::t('zii','Delete');
    if(
$this->viewButtonImageUrl===null)
        
$this->viewButtonImageUrl=$this->grid->baseScriptUrl.'/view.png';
    if(
$this->updateButtonImageUrl===null)
        
$this->updateButtonImageUrl=$this->grid->baseScriptUrl.'/update.png';
    if(
$this->deleteButtonImageUrl===null)
        
$this->deleteButtonImageUrl=$this->grid->baseScriptUrl.'/delete.png';
    if(
$this->deleteConfirmation===null)
        
$this->deleteConfirmation=Yii::t('zii','Are you sure you want to delete this item?');

    foreach(array(
'view','update','delete') as $id)
    {
        
$button=array(
            
'label'=>$this->{$id.'ButtonLabel'},
            
'url'=>$this->{$id.'ButtonUrl'},
            
'imageUrl'=>$this->{$id.'ButtonImageUrl'},
            
'options'=>$this->{$id.'ButtonOptions'},
        );
        if(isset(
$this->buttons[$id]))
            
$this->buttons[$id]=array_merge($button,$this->buttons[$id]);
        else
            
$this->buttons[$id]=$button;
    }

    if(!isset(
$this->buttons['delete']['click']))
    {
        if(
is_string($this->deleteConfirmation))
            
$confirmation="if(!confirm(".CJavaScript::encode($this->deleteConfirmation).")) return false;";
        else
            
$confirmation='';

        if(
Yii::app()->request->enableCsrfValidation)
        {
            
$csrfTokenName = Yii::app()->request->csrfTokenName;
            
$csrfToken = Yii::app()->request->csrfToken;
            
$csrf = "\n\t\tdata:{ '$csrfTokenName':'$csrfToken' },";
        }
        else
            
$csrf = '';

        if(
$this->afterDelete===null)
            
$this->afterDelete='function(){}';

        
$this->buttons['delete']['click']=<<<EOD
function() {
$confirmation
var th = this,
    afterDelete = 
$this->afterDelete;
jQuery('#
{$this->grid->id}').yiiGridView('update', {
    type: 'POST',
    url: jQuery(this).attr('href'),
$csrf
    success: function(data) {
        jQuery('#
{$this->grid->id}').yiiGridView('update');
        afterDelete(th, true, data);
    },
    error: function(XHR) {
        return afterDelete(th, false, XHR);
    }
});
return false;
}
EOD;
    }
}

Инициализирует стандартные кнопки (просмотр, обновление и удаление).

registerClientScript() метод

protected void registerClientScript()
Исходный код: framework/zii/widgets/grid/CButtonColumn.php#290 (показать)
protected function registerClientScript()
{
    
$js=array();
    foreach(
$this->buttons as $id=>$button)
    {
        if(isset(
$button['click']))
        {
            
$function=CJavaScript::encode($button['click']);
            
$class=preg_replace('/\s+/','.',$button['options']['class']);
            
$js[]="jQuery(document).on('click','#{$this->grid->id} a.{$class}',$function);";
        }
    }

    if(
$js!==array())
        
Yii::app()->getClientScript()->registerScript(__CLASS__.'#'.$this->id, implode("\n",$js));
}

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

renderButton() метод

protected void renderButton(string $id, array $button, integer $row, mixed $data)
$id строка идентификатор кнопки
$button массив настройка кнопки, которая может содержать элементы 'label', 'url', 'imageUrl' и 'options'. См. buttons для получения дополнительной информации.
$row целое число номер строки (с нуля)
$data смешанный тип объект данных, связанный со строкой
Исходный код: framework/zii/widgets/grid/CButtonColumn.php#337 (показать)
protected function renderButton($id,$button,$row,$data)
{
    if (isset(
$button['visible']) && !$this->evaluateExpression($button['visible'],array('row'=>$row,'data'=>$data)))
          return;
    
$label=isset($button['label']) ? $button['label'] : $id;
    
$url=isset($button['url']) ? $this->evaluateExpression($button['url'],array('data'=>$data,'row'=>$row)) : '#';
    
$options=isset($button['options']) ? $button['options'] : array();
    if(!isset(
$options['title']))
        
$options['title']=$label;
    if(isset(
$button['imageUrl']) && is_string($button['imageUrl']))
        echo 
CHtml::link(CHtml::image($button['imageUrl'],$label),$url,$options);
    else
        echo 
CHtml::link($label,$url,$options);
}

Отображает кнопку-ссылку.

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

Spec-Zone.ru

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