DetailView и 2 модели

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
vo_wonder
Сообщения: 19
Зарегистрирован: 2017.05.17, 20:57

DetailView и 2 модели

Сообщение vo_wonder »

Добрый день. Использую шаблон приложения advanced. Использую модель User "из коробки", также настроен RBAC, есть несколько ролей. Задача такая: отображать в панели администратора список пользователей и при детальном просмотре профиля пользователя отображать и его роль. Но в таблице user нет поля, которое соответствовало бы роли, зато оно есть в таблице auth_assignment. И DetailView работает только с одной моделью. А вопрос такой: если я прям руками в модели User добавлю новый атрибут (которого нет в таблице, напомню) и присвою ему значение соотв. роли, это будет правильно или за такое увольняют?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: DetailView и 2 модели

Сообщение ElisDN »

vo_wonder писал(а): 2017.07.17, 14:43 А вопрос такой: если я прям руками в модели User добавлю новый атрибут (которого нет в таблице, напомню) и присвою ему значение соотв. роли, это будет правильно или за такое увольняют?
Это будет дублированием.
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: DetailView и 2 модели

Сообщение Alexum »

1) Можно в gii сгенерировать модель для auth_assignment, кинуть к ней связь один к одному из User и в DetailView указывать в качестве атрибута 'attribute' => "userRole.item_name",
2) В DetailView можно собрать callback-функцию в 'value' , где делать всё, что душе угодно.
vo_wonder
Сообщения: 19
Зарегистрирован: 2017.05.17, 20:57

Re: DetailView и 2 модели

Сообщение vo_wonder »

Alexum писал(а): 2017.07.17, 17:19 2) В DetailView можно собрать callback-функцию в 'value' , где делать всё, что душе угодно.
Ну я так и хотел сделать (и, к слову, так и делаю в GridView), но, насколько я разобрался, вызов такой функции требует наличие атрибута, а у меня его как раз нет. Вот я и спрашивал, разумно ли добавлять такой атрибут вручную. Но вот Дмитрий пишет нам, что так делать не надо.
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: DetailView и 2 модели

Сообщение Alexum »

vo_wonder писал(а): 2017.07.17, 17:28 Ну я так и хотел сделать (и, к слову, так и делаю в GridView), но, насколько я разобрался, вызов такой функции требует наличие атрибута, а у меня его как раз нет. Вот я и спрашивал, разумно ли добавлять такой атрибут вручную...
Можно обойтись без 'attribute' указав только 'label' и 'value'. В функцию передаётся вся модель. Если вы задаёте 'value', то из 'attribute' только название подтягивается.
vo_wonder
Сообщения: 19
Зарегистрирован: 2017.05.17, 20:57

Re: DetailView и 2 модели

Сообщение vo_wonder »

Хм, действительно. Всё получилось. Спасибо, господа.
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: DetailView и 2 модели

Сообщение Nex-Otaku »

У пользователя может быть много ролей, а может не быть ни одной. Необходимо это учитывать.
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: DetailView и 2 модели

Сообщение Alexum »

Nex-Otaku писал(а): 2017.07.19, 07:46 У пользователя может быть много ролей, а может не быть ни одной. Необходимо это учитывать.
Конечно всё исходит от требований к гибкости настройки прав и сложности системы, но можно иметь основные роли, которые могут наследовать пермишены от более мелких ролей + при необходимости иметь свои уникальные пермишены. При этом назначать пользователю только одну основную роль.
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: DetailView и 2 модели

Сообщение Nex-Otaku »

Это понятно. Всё равно код должен учитывать, что ролей у пользователя может быть любое количество. Это следует из структуры БД и кода стандартного RBAC. Если не учитывать, то рано или поздно полезут косяки )
Ответить