DetailView и 2 модели
DetailView и 2 модели
Добрый день. Использую шаблон приложения advanced. Использую модель User "из коробки", также настроен RBAC, есть несколько ролей. Задача такая: отображать в панели администратора список пользователей и при детальном просмотре профиля пользователя отображать и его роль. Но в таблице user нет поля, которое соответствовало бы роли, зато оно есть в таблице auth_assignment. И DetailView работает только с одной моделью. А вопрос такой: если я прям руками в модели User добавлю новый атрибут (которого нет в таблице, напомню) и присвою ему значение соотв. роли, это будет правильно или за такое увольняют?
Re: DetailView и 2 модели
1) Можно в gii сгенерировать модель для auth_assignment, кинуть к ней связь один к одному из User и в DetailView указывать в качестве атрибута 'attribute' => "userRole.item_name",
2) В DetailView можно собрать callback-функцию в 'value' , где делать всё, что душе угодно.
2) В DetailView можно собрать callback-функцию в 'value' , где делать всё, что душе угодно.
Re: DetailView и 2 модели
Ну я так и хотел сделать (и, к слову, так и делаю в GridView), но, насколько я разобрался, вызов такой функции требует наличие атрибута, а у меня его как раз нет. Вот я и спрашивал, разумно ли добавлять такой атрибут вручную. Но вот Дмитрий пишет нам, что так делать не надо.
Re: DetailView и 2 модели
Можно обойтись без 'attribute' указав только 'label' и 'value'. В функцию передаётся вся модель. Если вы задаёте 'value', то из 'attribute' только название подтягивается.
Re: DetailView и 2 модели
Хм, действительно. Всё получилось. Спасибо, господа.
Re: DetailView и 2 модели
У пользователя может быть много ролей, а может не быть ни одной. Необходимо это учитывать.
Re: DetailView и 2 модели
Конечно всё исходит от требований к гибкости настройки прав и сложности системы, но можно иметь основные роли, которые могут наследовать пермишены от более мелких ролей + при необходимости иметь свои уникальные пермишены. При этом назначать пользователю только одну основную роль.
Re: DetailView и 2 модели
Это понятно. Всё равно код должен учитывать, что ролей у пользователя может быть любое количество. Это следует из структуры БД и кода стандартного RBAC. Если не учитывать, то рано или поздно полезут косяки )