簡體   English   中英

無法為 Yii2 中的 dbManager 創建自定義規則

[英]Cannot create custom rule for dbManager in Yii2

我正在嘗試為我的 Yii2 應用程序創建自定義規則,但是在運行遷移時出現了某種問題。 這是我的遷移的樣子:

    $manager = $auth->createRole('manager');
    $auth->add($manager);

    //Allow manager to create work items for own employees.
    $manager_rule = new ManagerRule();
    $auth->add($manager_rule);

    $create_employee_work_item = $auth->createPermission('create_employee_work_item');
    $create_employee_work_item->description = 'Create employee work item';
    $create_employee_work_item->ruleName = $manager_rule->name;

    $auth->add($create_employee_work_item);
    $auth->addChild($manager, $create_employee_work_item);

來自 ManagerRule class 的代碼:

namespace app\rbac;
use yii\rbac\Rule;
class ManagerRule extends Rule
{
    public $name = 'isManagerOf';

    public function execute($user, $item, $params)
    {
        return isset($params['user']) ? $params['user']->manager_id === $user : false;
    }
}

當我嘗試進行遷移時,我遇到了這個錯誤。 在此處輸入圖像描述

這發生在這里$auth->add($create_employee_work_item);

然后我注意到我的 auth_rule 表中有一些奇怪的東西。 在此處輸入圖像描述

我相信數據列的十六進制會產生問題,我不確定數據是否應該以十六進制格式存儲在那里。 任何想法如何解決它?

我使用 MSSQL 作為我的數據庫。

問題出在初始 RBAC 遷移文件m140506_102106_rbac_init.php

我發現 auth_item.data 列類型是二進制的:

$this->createTable($authManager->ruleTable, [
    'name' => $this->string(64)->notNull(),
    'data' => $this->binary(),
    'created_at' => $this->integer(),
    'updated_at' => $this->integer(),
    'PRIMARY KEY ([[name]])',
], $tableOptions);

所以我把它改成文字:

'data' => $this->text(),

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM