Настраиваем доступ к web приложению на основе ролей Yii 2. Часть 2. Поиск и сортировка ролей в GridView

В предыдущей статье мы познакомились с общими механизмами RBAC. Здесь же мы рассмотрим один из прикладных вопросов, связанных с интерфейсом пользователя.

Как известно большинство web приложений имеют так называемую админ панель, в которой осуществляется работа в том числе с учётными записями пользователей. Эта статья посвящена тому, как правильно реализовать сортировку и поиск пользователей по ролям если для этого используется стандартный виджет GridView.

Сразу отметим, что в данной статье мы будем опираться на материал целого ряда предыдущих статей ссылки, на которые для удобства будут даны в конце статьи.

Итак, первое, что необходимо сделать для подключения сортировки и поиска, создать модели для таблиц auth_item (роли) и auth_assignment (назначение ролей пользователям). Проще всего это сделать при помощи gii, тем более доработка этих моделей нам не потребуется.

После создания моделей в классе, отвечающем за хранение информации о пользователях в базе данных, необходимо прописать связь с таблицей auth_assignment. Например:

Далее в классе модели, отвечающем за поиск и сортировку (его имя начинается с Search (например, SearchUsers)) в методе search получаем данные из созданных нами в самом начале моделей при помощи метода joinWidth.

Здесь auth_assignment.itemName обозначает связь таблиц auth_assignment и auth_item.

Для сортировки используем способ, описанный в статьях [1] и [2].

В данном примере мы выполняем сортировку одновременно по двум полям. Имени роли (см. [3]) и имени пользователя (по нему всегда по возрастанию). При желании можно использовать иначе в соответствии требованиями конкретной задачи.

Поиск реализуем согласно способу из [2]. В нижеприведённом примере поиск осуществляется по полю description таблицы auth_item, в котором содержится название роли понятное для пользователя.

На этом подключения сортировки и поиска ролей в GridView для модуля RBAC можно считать завершённым. Код для GridView не приводится, так как он аналогичен [3].

Таким не особо хитрым образом можно «подружить» админ панель со стандартным GridView со стандартным же модулем RBAC.

Источники
  1. GridView и связанные таблицы в Yii 2;
  2. Использование псевдонимов связанных таблиц в Yii 2;
  3. Настраиваем доступ к web приложению на основе ролей Yii 2. Часть 1. Общие механизмы работы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *