Yii2 params access within local config file in common directory

前端 未结 3 1643
感情败类
感情败类 2020-12-19 04:27

I\'m using Yii2 advanced template, I want to access params.php in main-local.php file, I called this ways:

main-local.

相关标签:
3条回答
  • 2020-12-19 05:02

    The params is a part of config and you can not call this in your config .

    the best way for handel this you can use this in your class :

    myClass:

    class myClass extends ... {
    
        public $apikey;
    
        public function __construct(){
            $this->apikey =  \Yii::$app->params['mandrill_api_key'];
        }
    
    
    }
    
    0 讨论(0)
  • 2020-12-19 05:06

    The config files are read before the application is instantiated as explained in the request lifecycle:

    1. A user makes a request to the entry script web/index.php.
    2. The entry script loads the application configuration and creates an application instance to handle the request.
    3. The application resolves the requested route with the help of the request application component.
    4. ...

    As such \Yii::$app does not yet exist hence the error. I would suggest moving your api_key definition to the main-local.php config such that there is no confusion over where it is being set:

    'mailer' => [
        'class' => 'myClass',
        'apikey' => 'actual api key',
        'viewPath' => '@common/mail',            
    ],
    

    Alternatively, you can use Yii2's dependancy injection container to set the apikey in your application's entry script:

    ...
    $app = new yii\web\Application($config);
    \Yii::$container->set('\fully\qualified\myClass', [
        'apikey' => \Yii::$app->params['mandrill_api_key'],
    ]);
    $app->run();
    
    0 讨论(0)
  • 2020-12-19 05:23

    You can just do

    $params['mandrill_api_key'] 
    

    you dont need to use

    \Yii::$app->params['mandrill_api_key']
    
    0 讨论(0)
提交回复
热议问题