Yii2参数访问公共目录中的本地配置文件

Yii2参数访问公共目录中的本地配置文件,yii2,yii2-advanced-app,Yii2,Yii2 Advanced App,我正在使用Yii2高级模板, 我想访问main local.php文件中的params.php, 我称之为: main local.php: 'mailer' => [ 'class' => 'myClass', 'apikey' => \Yii::$app->params['mandrill_api_key'], 'viewPath' => '@common/mail',

我正在使用
Yii2
高级模板, 我想访问
main local.php
文件中的
params.php
, 我称之为:

main local.php:

'mailer' => [
            'class' => 'myClass',
             'apikey' => \Yii::$app->params['mandrill_api_key'],
             'viewPath' => '@common/mail',            
        ],
<?php
return [
    'adminEmail' => 'admin@example.com',
    'supportEmail' => 'support@example.com',
    'user.passwordResetTokenExpire' => 3600,
     'mandrill_api_key' => 'mykey'
];
我已经将这个
mandrill\u api\u键存储在
params.php

params.php:

'mailer' => [
            'class' => 'myClass',
             'apikey' => \Yii::$app->params['mandrill_api_key'],
             'viewPath' => '@common/mail',            
        ],
<?php
return [
    'adminEmail' => 'admin@example.com',
    'supportEmail' => 'support@example.com',
    'user.passwordResetTokenExpire' => 3600,
     'mandrill_api_key' => 'mykey'
];

在实例化应用程序之前读取配置文件,如中所述:

  • 用户向条目脚本web/index.php发出请求
  • 入口脚本加载应用程序配置并创建应用程序实例来处理请求
  • 应用程序在请求应用程序组件的帮助下解析请求的路由
  • 因此,
    \Yii::$app
    不存在,因此出现错误。我建议将您的api_密钥定义移动到
    main local.php
    config,这样就不会混淆它的设置位置:

    'mailer' => [
        'class' => 'myClass',
        'apikey' => 'actual api key',
        'viewPath' => '@common/mail',            
    ],
    
    或者,您可以使用Yii2在应用程序的输入脚本中设置
    apikey

    ...
    $app = new yii\web\Application($config);
    \Yii::$container->set('\fully\qualified\myClass', [
        'apikey' => \Yii::$app->params['mandrill_api_key'],
    ]);
    $app->run();
    

    参数是配置的一部分,您不能在配置中调用它

    韩德尔的最佳方法是在课堂上使用:

    myClass:

    class myClass extends ... {
    
        public $apikey;
    
        public function __construct(){
            $this->apikey =  \Yii::$app->params['mandrill_api_key'];
        }
    
    
    }
    
    你可以这么做

    $params['mandrill_api_key'] 
    
    你不需要使用

    \Yii::$app->params['mandrill_api_key']
    

    您是否尝试添加\,例如:\Yii::$app->params['mandrill\u api\u key']是的,我尝试过这个,但不起作用,可能是我需要在应用程序引导时定义一些内容。谢谢,我会尝试,但我的问题是,我必须从数据库中获取此API密钥并在config中设置。正如@huss指出的,您可以直接在本地配置文件中使用$params。这应该是可以接受的答案。Yii2 config在启动主配置脚本$params=require(DIR.'/params.php')时加载params文件;因此,您可以在文件的任何部分使用$params数组