Я думаю, что это немного сложно, так как у нас нет доступа к панели инструментов плагина пользователя, чтобы добавить кнопку, чтобы.
Но ДА мы можем это сделать, нам нужно попробовать немного сложнее :)Давайте начнем
Конечный результат
Чтобы добавить кнопку экспорта, нам нужно Расширить rainlab.user
плагин. Так что из вашего собственного плагина вам это нужно.
1. Добавление кода расширения в метод загрузки вашего плагина
class Plugin extends PluginBase
{
use \System\Traits\ConfigMaker; // trait to read config
public function boot() {
\RainLab\Users\Controllers\Users::extend(function($controller) {
// we only extend if its not already extended with ImportExport Behavior
if(!$controller->isClassExtendedWith('Backend.Behaviors.ImportExportController')) {
$controller->implement[] = 'Backend.Behaviors.ImportExportController';
// make sure you replace this path to your plugin directory
$extensionPath = '$/hardiksatasiya/stackdemo/user_extension_files/';
$controller->addDynamicProperty(
'importExportConfig',
$extensionPath . 'config_import_export.yaml'
);
$newListConfig = $this->makeConfig(
'$/rainlab/user/controllers/users/config_list.yaml'
);
$newListConfig->toolbar['buttons'] =
$extensionPath . '_new_list_toolbar.htm';
$controller->listConfig = $newListConfig;
}
});
}
....
2. Создание папки и файлов
Создайте папку в корневом каталоге вашего плагина и назовите ее user_extension_files
Внутри этого каталога
Добавьте config_import_export.yaml
с содержимым
export:
useList: true
Добавить _new_list_toolbar.htm
с контентом [Это будет просто копия plugins/rainlab/user/controllers/users/_list_toolbar.htm
с небольшим изменением]
С добавлением Our Brand New Shiny Export button
без вставки всего кода это будет слишком долго, поэтомупросто вставьте его фрагмент.
<div data-control="toolbar">
... copied code ...
<!-- our export button -->
<a
href="<?= Backend::url('rainlab/user/users/export') ?>"
class="btn btn-primary oc-icon-sign-out">
Export
</a>
</div>
Теперь, когда вы нажимаете на кнопку экспорта, он должен экспортировать записи и он также будет учитывать все примененные фильтры.
@ ПРИМЕЧАНИЕ: мы копируем код в _new_list_toolbar.htm
, поэтому в будущем, если плагин пользователя обновляется и он решает добавить новые кнопки на панели инструментов, тогдамы не можем этого добиться. Поэтому в это время нам просто нужно скопировать и вставить код из plugins/rainlab/user/controllers/users/_list_toolbar.htm
в наш файл _new_list_toolbar.htm
снова. Мы снова в деле :).
если есть сомнения, прокомментируйте.