Кастомные кнопки в 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
ОтветитьУдалить