CButtonColumn
| Пакет | zii.widgets.grid |
|---|---|
| Наследование | class CButtonColumn » CGridColumn » CComponent |
| С | 1.1 |
| Исходный код | framework/zii/widgets/grid/CButtonColumn.php |
По умолчанию, он отображает три кнопки: "просмотр", "редактирование" и "удаление", которые вызывают соответствующие действия для модели строки.
Настроив свойства 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 в случае ошибки.
Пример:
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 выражение может быть любым 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 выражение может быть любым 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 выражение может быть любым PHP кодом, имеющим значение. Чтобы узнать больше о том, что такое выражение, обратитесь к руководству PHP.
Подробное описание методов
getDataCellContent() метод (доступен с версии v1.1.16)
public string getDataCellContent(integer $row) | ||
| $row | целое число | номер строки (с нуля) |
| {return} | строка | содержимое ячейки данных. |
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() |
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() |
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() |
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 | смешанный тип | объект данных, связанный со строкой |
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