2015-09-30 54 views
1

我正在通過Security-Authorization Tutorial來使用DbManager配置authManager。在yii2-app-base中使用DbManager配置authManager

聲明以下代碼中web.php

<?php 

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

$config = [ 
    'id' => 'basic', 
    'basePath' => dirname(__DIR__), 
    'bootstrap' => ['log'], 
    'components' => [ 
    'urlManager' => [ 
     'showScriptName' => false, 
     'enablePrettyUrl' => true 
    ], 
    'authManager' => [ 
      'class' => 'yii\rbac\DbManager', 
     ], 
     'request' => [ 
      // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation 
      'cookieValidationKey' => 'tYXyeisqgn9Qn_baaI6JRV4a6NY54nrq', 
     ], 
     'cache' => [ 
      'class' => 'yii\caching\FileCache', 
     ], 
     'user' => [ 
      'identityClass' => 'app\models\User', 
      'enableAutoLogin' => true, 
     ], 
     'errorHandler' => [ 
      'errorAction' => 'site/error', 
     ], 
     'mailer' => [ 
      'class' => 'yii\swiftmailer\Mailer', 
      // send all mails to a file by default. You have to set 
      // 'useFileTransport' to false and configure a transport 
      // for the mailer to send real emails. 
     'viewPath' => '@backend/mail', 
      'useFileTransport' => true, 
     'transport' => [ 
      'class' => 'Swift_SmtpTransport', 
      'host' => 'localhost', 
      'username' => 'root', 
      'password' => '', 
      'port' => '8080', 
      'encryption' => 'tls', 
         ], 
     ], 
     'log' => [ 
      'traceLevel' => YII_DEBUG ? 3 : 0, 
      'targets' => [ 
       [ 
        'class' => 'yii\log\FileTarget', 
        'levels' => ['error', 'warning'], 
       ], 
      ], 
     ], 
     'db' => require(__DIR__ . '/db.php'), 
    ], 
    'params' => $params, 
]; 

if (YII_ENV_DEV) { 
    // configuration adjustments for 'dev' environment 
    $config['bootstrap'][] = 'debug'; 
    $config['modules']['debug'] = [ 
     'class' => 'yii\debug\Module', 
    ]; 

    $config['bootstrap'][] = 'gii'; 
    $config['modules']['gii'] = [ 
     'class' => 'yii\gii\Module', 
    ]; 
} 

return $config; 

而且,該代碼在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' => [ 
    'authManager' => [ 
      'class' => 'yii\rbac\DbManager', 
     ], 
     'cache' => [ 
      'class' => 'yii\caching\FileCache', 
     ], 
     'log' => [ 
      'targets' => [ 
       [ 
        'class' => 'yii\log\FileTarget', 
        'levels' => ['error', 'warning'], 
       ], 
      ], 
     ], 
     'db' => $db, 
    ], 
    'params' => $params, 
]; 

配置/ db.php中

<?php 

return [ 
    'class' => 'yii\db\Connection', 
    'dsn' => 'mysql:host=localhost;dbname=danishYii', 
    'username' => 'root', 
    'password' => '', 
    'charset' => 'utf8', 
]; 

我在終端輸入./yii migrate --migrationPath=vendor/yiisoft/yii2/rbac/migrations 。這個命令我從Component is not getting loaded -Stack overflow

了我在終端得到這個錯誤

異常「警予\ DB \異常」與消息「SQLSTATE [HY000] [2002] 無法連接到本地MySQL服務器通過socket '/var/run/mysqld/mysqld.sock'(2)」

enter image description here

我很新的Yii的。所以請不要介意這是否是一個愚蠢的問題。 請幫我解決這個問題。

回答

2

檢查你的

console/config/main.php 

你有這樣的樣品yii2,應用先進的模板

'components' => [ 
    'db' => [ 
     'class' => 'yii\db\Connection', 
     'dsn' => 'mysql:host=your_hostname;dbname=your_dbname', 
     'username' => 'your_username', 
     'password' => 'your_password', 
     'charset' => 'utf8', 
     'enableSchemaCache' => true,    
    ], 

基本模板DB訪問適當的配置

請確保您有在基本/控制檯/ config.php一個引用數據庫在組件secion像這樣

return [ 
    ....... 
    'components' => [ 
     ...... 
    'db' => require(__DIR__ . '/db.php'), 
    ], 
     ...... 
]; 

,然後在basci /配置/ db.php中適當配置分貝

return [ 
     'class' => 'yii\db\Connection', 
     'dsn' => 'mysql:host=your_hostname;dbname=your_dbname', 
     'username' => 'your_username', 
     'password' => 'your_password', 
     'charset' => 'utf8', 
    ]; 
+0

嗨Scais先生。我認爲這個配置適用於yii2-app-advanced。我有config/db.php。我在編輯我的問題。請看一看 。 –

+0

是的。 @Scais先生。我有'db'=> $ db,在console.php –

+0

是不是正確你好有更新答案檢查,如果在你的console.php ypu有一個適當的參考db.php – scaisEdge