我正在使用yii2基本模板。我正在尝试使用yii2中的数据库迁移创建RBAC数据库,我已经成功创建了几个表,而在创建RBAC表时,我有不同的功能,如下所示:
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 :(得分:0)
我已经解决了这个问题。在迁移类中包含DbManager如下所示
use yii\rbac\DbManager;
答案 1 :(得分:0)
好的,有了你的答案,我明白了:你可能复制了original RBAC migration script的class
,但忘了在文件顶部加use
行,这是可能的?
由于缺少use
,因此不知道DbManager
实际意味着什么,因此getAuthManager()
检查未知类并且条件失败。
这也解释了为什么通过添加use yii\rbac\DbManager
来解决问题。
话虽这么说,运行框架迁移的正确方法是使用migrationPath
选项:
./yii migrate --migrationPath=vendor/yiisoft/yii2/rbac/migrations
我会说,试试这会导致你减少很多问题:)