Кастомные кнопки в CGridView. Часть 2. Тонкая настройка
В первой части статьи я привела основные параметры настройки кнопок, в этой части покажу, как добавить свои кнопки. Многамногакнопок! )))
Мы уже знаем, что в параметре template задается, какие кнопки и в каком порядке будут выведены.
Кроме стандартных update, view, delete у нас есть возможность добавлять любую кнопку в виде {buttonID} в шаблон, но каждую добавленную кнопку необходимо описать в массиве buttons. Например:
Мы уже знаем, что в параметре template задается, какие кнопки и в каком порядке будут выведены.
Кроме стандартных update, view, delete у нас есть возможность добавлять любую кнопку в виде {buttonID} в шаблон, но каждую добавленную кнопку необходимо описать в массиве buttons. Например:
array(
'class' => 'CButtonColumn',
'template' => '{add}{preview}', // в шаблоне определяем новые две кнопки add и preview
'buttons' => array(
'add' => array( ... ), // определение кнопки add
'preview' => array( ... ), // определение кнопки preview
)
)
Каждый элемент массива buttons определяет отдельную кнопку в следующем формате: 'buttonID' => array(
'label'=>'...', // текстовая надпись кнопки
'url'=>'...', // PHP-выражение для генерации URL-адреса кнопки
'imageUrl'=>'...', // URL-адрес изображения кнопки. Если не установлено или установлено в значение false, используется текстовая ссылка
'options'=>array(...), // HTML-опции для тега кнопки
'click'=>'...', // JS-функция, вызываемая по клику на кнопку
'visible'=>'...', // PHP-выражение для определения видимости кнопки
)
В PHP-выражении для опций url и/или visible доступны переменные:
row
- текущий номер строки (начиная с нуля);data
- модель данных для строки.
Примеры
// Установка видимости кнопки в зависимости от прав доступа и доп. условий
'update' => array(
'url'=>'Yii::app()->urlManager->createUrl("/list/update", array("id" => $data->id))',
'visible'=>'(!$data->archive AND Yii::app()->user->checkAccess("update"))',
),
// При клике отрабатывает функция dataLoad, в которой происходит ajax-запрос по указанному URL и открывается попап с полученными данными
'view' => array(
'url'=>'Yii::app()->urlManager->createUrl("/list/view", array("id" => $data->id))',
'options'=>array(
'onclick'=>"dataLoad($(this).attr('href')); return false;"
),
),
// Установка иконки и видимости кнопки
'statistic' => array(
'url'=>'Yii::app()->urlManager->createUrl("/list/statistic", array("id" => $data->id))',
'imageUrl'=>'/images/chart.gif',
'options'=>array('title'=>'Statistics'),
'visible'=>'($data->date_start<=date("Y-m-d",time()))',
),
Часть 1. Базовая настройка
Или уже используете в работе?
ОтветитьУдалитьНет, последние пару лет в основном работаю с Битриксом. А Yii посматриваю для себя. Был бы интересный проект - заюзала бы и Yii2 :)
УдалитьОтличная статья, А когда планируется переход на Yii2
ОтветитьУдалить