ArtyomovAnton
@ArtyomovAnton
PHP и всё что рядом

Как можно использовать свойство data класса yii\rbac\Item?

В документации сказано, что здесь могут быть любые смешанные данные привязанные к текущей item.
Это понятно. Но как это можно применить на практике? Нигде примеров найти не смог.
  • Вопрос задан
  • 164 просмотра
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Я не юзал данное чудо свойство, но Вы меня заинтересовали, полез в ядро и накопал следующее:
В yii\rbac\DbManager есть метод addItem
/**
     * @inheritdoc
     */
    protected function addItem($item)
    {
        $time = time();
        if ($item->createdAt === null) {
            $item->createdAt = $time;
        }
        if ($item->updatedAt === null) {
            $item->updatedAt = $time;
        }
        $this->db->createCommand()
            ->insert($this->itemTable, [
                'name' => $item->name,
                'type' => $item->type,
                'description' => $item->description,
                'rule_name' => $item->ruleName,
                'data' => $item->data === null ? null : serialize($item->data),
                'created_at' => $item->createdAt,
                'updated_at' => $item->updatedAt,
            ])->execute();

        $this->invalidateCache();

        return true;
    }

А значит при создании любой item, а это может быть роли или правило, можно к ней прикрепить произвольные данные. Например:
$role = Yii::$app->authManager->createRole('admin');
$role->description = 'Администратор';
$role->data = ['roleColor'=>'#fff', 'razmer_sisek'=>5];
Yii::$app->authManager->add($role);

Что бы потом юзать, например для смены фона или более полезных вещей. Пока не пробовал, но должно работать. Как-то так:
<?php
$role = Yii::$app->authManager->get('admin');
$bgcolor = $role->data['roleColor'];
?>
<body style="background-color:<?=$bgcolor?>;">
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы