组件未在yii2 basic

时间:2015-08-20 07:40:51

标签: yii2 yii-components

我正在使用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,
];

2 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。在迁移类中包含DbManager如下所示

use yii\rbac\DbManager;

答案 1 :(得分:0)

好的,有了你的答案,我明白了:你可能复制了original RBAC migration scriptclass,但忘了在文件顶部加use行,这是可能的?

由于缺少use,因此不知道DbManager实际意味着什么,因此getAuthManager()检查未知类并且条件失败。 这也解释了为什么通过添加use yii\rbac\DbManager来解决问题。

话虽这么说,运行框架迁移的正确方法是使用migrationPath选项:

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

我会说,试试这会导致你减少很多问题:)