Кастомные кнопки в CGridView. Часть 1. Базовая кастомизация
Как мы знаем, в гриде для вывода колонки кнопок существует специальный класс CButtonColumn. С его помощью мы получаем дополнительную функциональность. Но что, если предусмотренных по дефолту кнопок не хватает или мы хотим изменить их вид или функциональность? Для этого заглянем в документацию.
Итак, по умолчанию выводятся три кнопки - просмотра, редактирования и удаления записи.
Для вывода колонки кнопок необходимо добавить следующий код в массив columns:
Обратите внимание, что для каждой кнопки в параметре [button]ButtonUrl доступны переменные:
Читать продолжение. Часть 2. Тонкая настройка
Итак, по умолчанию выводятся три кнопки - просмотра, редактирования и удаления записи.
Для вывода колонки кнопок необходимо добавить следующий код в массив columns:
array(
'class'=>'CButtonColumn'
),
Порядок вывода кнопок задается шаблоном, а именно параметром template, который по умолчанию содержит значение "{view} {update} {delete}". array(
'class'=>'CButtonColumn'
'template'=>'{view} {update} {delete}'
),
// или
array(
'class'=>'CButtonColumn'
'template'=>'{update} {view}'
),
// или
array(
'class'=>'CButtonColumn'
'template'=>'{update}'
),
Кроме того, для каждой кнопки также есть ряд параметров, например, updateButtonUrl, viewButtonLabel и т.д., которые определяют основные настройки.Обратите внимание, что для каждой кнопки в параметре [button]ButtonUrl доступны переменные:
row
- номер строки (начиная с нуля),data
- модель данных для строки,this
- объект столбца
Кнопка view - Просмотр
viewButtonLabel
@var string надпись для кнопки просмотра. По умолчанию - "View".
ВАЖНО! Значение не проходит HTML-кодирование при генерации
ВАЖНО! Значение не проходит HTML-кодирование при генерации
viewButtonImageUrl
@var string URL-адрес изображения для кнопки просмотра. Если не установлено, используется встроенная кнопка.
Можно установить данное свойство в значение false для генерации текстовой ссылки вместо ссылки-пиктограммы
Можно установить данное свойство в значение false для генерации текстовой ссылки вместо ссылки-пиктограммы
viewButtonUrl='Yii::app()->controller->createUrl("view",array("id"=>$data->primaryKey))'
@var string PHP-выражение, выполняющееся для каждой кнопки просмотра и результат которого используется в качестве URL-адреса кнопки. В данном выражении доступны переменные:
row
- номер строки (начиная с нуля),data
- модель данных для строки,this
- объект столбца
viewButtonOptions=array('class'=>'view')
@var array HTML-опции для тега кнопки просмотра
Кнопка update - Редактирование
updateButtonLabel
@var string надпись кнопки обновления. По умолчанию - "Update".
ВАЖНО! Значение не проходит HTML-кодирование при генерации
ВАЖНО! Значение не проходит HTML-кодирование при генерации
updateButtonImageUrl
@var string URL-адрес изображения для кнопки обновления. Если не установлено, используется встроенная кнопка.
Можно установить данное свойство в значение false для генерации текстовой ссылки вместо ссылки-пиктограммы
Можно установить данное свойство в значение false для генерации текстовой ссылки вместо ссылки-пиктограммы
updateButtonUrl='Yii::app()->controller->createUrl("update",array("id"=>$data->primaryKey))'
@var string PHP-выражение, выполняющееся для каждой кнопки обновления и результат которого используется в качестве URL-адреса кнопки. В данном выражении доступны переменные:
row
- номер строки (начиная с нуля),data
- модель данных для строки,this
- объект столбца
updateButtonOptions=array('class'=>'update')
@var array HTML-опции для тега кнопки обновления
Кнопка delete - Удаление
deleteButtonLabel
@var string надпись кнопки удаления. По умолчанию - "Delete".
ВАЖНО! Значение не проходит HTML-кодирование при генерации
ВАЖНО! Значение не проходит HTML-кодирование при генерации
deleteButtonImageUrl
@var string URL-адрес изображения для кнопки удаления. Если не установлено, используется встроенная кнопка.
Можно установить данное свойство в значение false для генерации текстовой ссылки вместо ссылки-пиктограммы
Можно установить данное свойство в значение false для генерации текстовой ссылки вместо ссылки-пиктограммы
deleteButtonUrl='Yii::app()->controller->createUrl("delete",array("id"=>$data->primaryKey))'
@var string PHP-выражение, выполняющееся для каждой кнопки удаления и результат которого используется в качестве URL-адреса кнопки. В данном выражении доступны переменные:
row
- номер строки (начиная с нуля),data
- модель данных для строки,this
- объект столбца
deleteButtonOptions=array('class'=>'delete')
@var array HTML-опции для тега кнопки удаления
deleteConfirmation
@var string сообщение подтверждения, отображаемое при щелчке на кнопке удаления. Установка данного свойства в значение false позволяет не отображать сообщение подтверждения. Свойство используется только если
$this->buttons['delete']['click']
не установлено
afterDelete
@var string javascript-функция, выполняемая после ajax-вызова удаления.
Свойство используется только если
$this->buttons['delete']['click']
не установлено.
Функция имеет вид function(link, success, data)
, где
link
- ссылка для удаления;success
- статус ajax-вызова: true - если ajax-вызов прошел успешно, false - неуспешно;data
- возвращаемые сервером данные в случае успешного выполнения запроса или объект XHR в случае ошибки.
array(
'class'=>'CButtonColumn',
'afterDelete'=>'function(link,success,data){ if(success) alert("Удаление успешно проведено"); }',
),
Читать продолжение. Часть 2. Тонкая настройка
В статье наверно есть опечатка. Написано, что для вывода кнопок используется параметр template, но в примере все так же задается параметр class 2 раза.
ОтветитьУдалитьarray(
'class'=>'CButtonColumn'
'class'=>'{view} {update} {delete}' //так должно быть или все таки здесь template?
)
конечно, опечатка. Спасибо, что заметили!
Удалить