2015-08-20 52 views
0

我正在使用yii2基本模板。我試圖創建使用yii2數據庫遷移RBAC DB,我已經創建了幾張桌子成功,雖然我創建RBAC表我有不同的功能,如下所示:組件不是在yii2基礎上獲取加載的組件

protected function getAuthManager() 
{ 
    $authManager = Yii::$app->getAuthManager(); 
    if (!$authManager instanceof DbManager) { 
     throw new InvalidConfigException('You should configure "authManager" component to use database before executing this migration.'); 
    } 
    return $authManager; 
} 

此功能沒有返回authManager即使我已經加入此

'authManager'=>[ 
    'class'=>'yii\rbac\DbManager', 
],` 
錯誤的console.php

前幾行

是:

Exception: You should configure "authManager" component to use database before executing this migration. (C:\xampp\htdocs\PMTool\migrations\m150820_064854_rbac.php:13) 
C:\xampp\htdocs\PMTool\migrations\m150820_064854_rbac.php(20): m150820_064854_rbac->getAuthManager() 
console.php的

代碼

`<?php 

Yii::setAlias('@tests', dirname(__DIR__) . '/tests'); 

$params = require(__DIR__ . '/params.php'); 
$db = require(__DIR__ . '/db.php'); 

return [ 
'id' => 'basic-console', 
'basePath' => dirname(__DIR__), 
'bootstrap' => ['log', 'gii'], 
'controllerNamespace' => 'app\commands', 
'modules' => [ 
    'gii' => 'yii\gii\Module', 
], 
'components' => [ 
    'cache' => [ 
     'class' => 'yii\caching\FileCache', 
    ], 
    'log' => [ 
     'targets' => [ 
      [ 
       'class' => 'yii\log\FileTarget', 
       'levels' => ['error', 'warning'], 
      ], 
     ], 
    ], 
    'db' => $db, 
    'authManager'=>[ 
     'class'=>'yii\rbac\DbManager', 
    ], 
], 
'params' => $params, 
]; 
+0

可以肯定的是:你是否在''components''下添加了它?不可能在這裏看到。 (雖然我懷疑'Yii'不會啓動,如果你將它添加到其他地方) – Blizz

+0

''authManager'=> [ 'class'=>'yii \ rbac \ DbManager', ],'add in'web.php '文件,'componets'數組的一部分。 – GAMITG

+0

是的,我已經將它添加到組件@Blizz – akhil

回答

0

我已經解決了issue.By包括DbManager在遷移類,如下

use yii\rbac\DbManager;

+0

嗯,這並不真正看起來像一個正確的解決方案。你不應該修改Yii的遷移(或者是你自己的遷移?) – Blizz

+0

遷移是我自己的。我編寫了它們。有沒有其他方式,包括DbManager – akhil

+0

好吧,我想我現在得到它,看我的答案是否可以幫助你。 – Blizz

0

好吧,你的答案,我得到它:你可能複製original RBAC migration scriptclass,但忘記在文件的頂部包含use行,這有可能嗎?

由於缺少use,因此不知道DbManager究竟意味着什麼,因此getAuthManager()會針對未知類進行檢查,並且條件失敗。 這也解釋了爲什麼通過添加use yii\rbac\DbManager解決了問題。

話雖這麼說,運行框架遷移正確的方法是簡單地使用migrationPath選項:

./yii migrate --migrationPath=vendor/yiisoft/yii2/rbac/migrations 

我要說,嘗試,它會導致你少了一大堆問題:)

+0

嗨,Blizz。我可以直接複製此代碼「./yii migrate --migrationPath = vendor/yiisoft/yii2/rbac/migrations」以在我的終端中運行。或者,我必須更改任何代碼,例如migrationPath –

+0

不,您應該可以像這樣使用它,它的基本功能 – Blizz